changeset 21950:af44c7a1e55e stable

histedit: respect revsetalias entries (issue4311) We now expand user-provided revsets before using repo.revs() to locate the root(s) of the user-specified set.
author Augie Fackler <raf@durin42.com>
date Mon, 28 Jul 2014 19:20:13 -0400
parents ad56fc55cbc3
children 59af0b21ec31
files hgext/histedit.py tests/test-histedit-commute.t
diffstat 2 files changed, 28 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/histedit.py	Mon Jul 28 10:05:17 2014 +0200
+++ b/hgext/histedit.py	Mon Jul 28 19:20:13 2014 -0400
@@ -158,6 +158,7 @@
 from mercurial import hg
 from mercurial import node
 from mercurial import repair
+from mercurial import scmutil
 from mercurial import util
 from mercurial import obsolete
 from mercurial import merge as mergemod
@@ -567,11 +568,11 @@
                 remote = None
             root = findoutgoing(ui, repo, remote, force, opts)
         else:
-            rootrevs = list(repo.set('roots(%lr)', revs))
-            if len(rootrevs) != 1:
+            rr = list(repo.set('roots(%ld)', scmutil.revrange(repo, revs)))
+            if len(rr) != 1:
                 raise util.Abort(_('The specified revisions must have '
                     'exactly one common root'))
-            root = rootrevs[0].node()
+            root = rr[0].node()
 
         keep = opts.get('keep', False)
         revs = between(repo, root, topmost, keep)
--- a/tests/test-histedit-commute.t	Mon Jul 28 10:05:17 2014 +0200
+++ b/tests/test-histedit-commute.t	Mon Jul 28 19:20:13 2014 -0400
@@ -324,6 +324,30 @@
      date:        Thu Jan 01 00:00:00 1970 +0000
      summary:     a
   
+Verify that revsetalias entries work with histedit:
+  $ cat >> $HGRCPATH <<EOF
+  > [revsetalias]
+  > grandparent(ARG) = p1(p1(ARG))
+  > EOF
+  $ echo extra commit >> c
+  $ hg ci -m 'extra commit to c'
+  $ HGEDITOR=cat hg histedit 'grandparent(.)'
+  pick ece0b8d93dda 6 c
+  pick 803ef1c6fcfd 7 e
+  pick 9c863c565126 8 extra commit to c
+  
+  # Edit history between ece0b8d93dda and 9c863c565126
+  #
+  # Commits are listed from least to most recent
+  #
+  # Commands:
+  #  p, pick = use commit
+  #  e, edit = use commit, but stop for amending
+  #  f, fold = use commit, but combine it with the one above
+  #  d, drop = remove commit from history
+  #  m, mess = edit message without changing commit content
+  #
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
 should also work if a commit message is missing
   $ BUNDLE="$TESTDIR/missing-comment.hg"