Mercurial > hg
annotate mercurial/stack.py @ 38618:c829749e7639
shelve: directly handle the initial parent alignment
Shelve is currently sub-contracting some of its work to the rebase extension.
In order to make shelve more independent and flexible we would like shelve to
handle the parent alignment directly.
After this change, we no longer need to use rebase in shelve.
Differential Revision: https://phab.mercurial-scm.org/D3693
author | Boris Feld <boris.feld@octobus.net> |
---|---|
date | Tue, 29 May 2018 00:30:50 +0200 |
parents | 68fcc5503ec5 |
children | 77c52ce50e6a |
rev | line source |
---|---|
37000
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
1 # stack.py - Mercurial functions for stack definition |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
2 # |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
3 # Copyright Matt Mackall <mpm@selenic.com> and other |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
4 # |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
6 # GNU General Public License version 2 or any later version. |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
7 |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
8 from __future__ import absolute_import |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
9 |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
10 from . import ( |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
11 revsetlang, |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
12 scmutil, |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
13 ) |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
14 |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
15 def getstack(repo, rev=None): |
37004
68fcc5503ec5
stack: return a sorted smartrev by default
Boris Feld <boris.feld@octobus.net>
parents:
37000
diff
changeset
|
16 """return a sorted smartrev of the stack containing either rev if it is |
68fcc5503ec5
stack: return a sorted smartrev by default
Boris Feld <boris.feld@octobus.net>
parents:
37000
diff
changeset
|
17 not None or the current working directory parent. |
37000
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
18 |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
19 The stack will always contain all drafts changesets which are ancestors to |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
20 the revision and are not merges. |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
21 """ |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
22 if rev is None: |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
23 rev = '.' |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
24 |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
25 revspec = 'reverse(only(%s) and not public() and not ::merge())' |
40583c7afd63
stack: add a new module for stack-related commands
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
26 revset = revsetlang.formatspec(revspec, rev) |
37004
68fcc5503ec5
stack: return a sorted smartrev by default
Boris Feld <boris.feld@octobus.net>
parents:
37000
diff
changeset
|
27 revisions = scmutil.revrange(repo, [revset]) |
68fcc5503ec5
stack: return a sorted smartrev by default
Boris Feld <boris.feld@octobus.net>
parents:
37000
diff
changeset
|
28 revisions.sort() |
68fcc5503ec5
stack: return a sorted smartrev by default
Boris Feld <boris.feld@octobus.net>
parents:
37000
diff
changeset
|
29 return revisions |