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) 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/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 --------------------------------------------------