D2399: stack: return a sorted smartrev by default
lothiraldan (Boris Feld)
phabricator at mercurial-scm.org
Fri Feb 23 10:37:04 UTC 2018
lothiraldan created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
Most stack customers will display a list of revisions, sort it by default.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D2399
AFFECTED FILES
mercurial/destutil.py
mercurial/stack.py
tests/test-stack.t
CHANGE DETAILS
diff --git a/tests/test-stack.t b/tests/test-stack.t
--- a/tests/test-stack.t
+++ b/tests/test-stack.t
@@ -57,8 +57,8 @@
$ hg up other
0 files updated, 0 files merged, 4 files removed, 0 files unresolved
$ hg debugstack
+ 0
1
- 0
$ hg phase --public 'branch("other")'
$ hg debugstack
$ hg up foo
@@ -72,10 +72,10 @@
$ hg branch
foo
$ hg debugstack
+ 2
+ 3
+ 4
5
- 4
- 3
- 2
Case with some of the branch unstable
------------------------------------
@@ -105,8 +105,8 @@
$ hg up -r "desc(c_e)"
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg debugstack
+ 3
4
- 3
$ hg up -r "desc(c_d)"
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
@@ -167,13 +167,13 @@
Test output
$ hg debugstack
+ 9
10
- 9
$ hg up 'desc(c_f)'
2 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg debugstack
+ 7
8
- 7
Case with multiple heads with unstability involved
--------------------------------------------------
diff --git a/mercurial/stack.py b/mercurial/stack.py
--- a/mercurial/stack.py
+++ b/mercurial/stack.py
@@ -10,8 +10,8 @@
from . import revsetlang, scmutil
def getstack(repo, rev=None):
- """return a smartrev of the stack containing either rev if it is not None
- or the current working directory parent.
+ """return a sorted smartrev of the stack containing either rev if it is
+ not None or the current working directory parent.
The stack will always contain all drafts changesets which are ancestors to
the revision and are not merges.
@@ -21,4 +21,6 @@
revspec = 'reverse(only(%s) and not public() and not ::merge())'
revset = revsetlang.formatspec(revspec, rev)
- return scmutil.revrange(repo, [revset])
+ revisions = scmutil.revrange(repo, [revset])
+ revisions.sort()
+ return revisions
diff --git a/mercurial/destutil.py b/mercurial/destutil.py
--- a/mercurial/destutil.py
+++ b/mercurial/destutil.py
@@ -359,7 +359,7 @@
def stackbase(ui, repo):
revs = stack.getstack(repo)
- return revs.last() if revs else None
+ return revs.first() if revs else None
def _statusotherbook(ui, repo):
bmheads = bookmarks.headsforactive(repo)
To: lothiraldan, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list