[PATCH v2] histedit: select the lowest rev when looking for a root in a revset

David Soria Parra davidsp at fb.com
Wed Mar 19 13:32:19 CDT 2014


# HG changeset patch
# User David Soria Parra <davidsp at fb.com>
# Date 1394751906 25200
#      Thu Mar 13 16:05:06 2014 -0700
# Node ID cd5d791af790d7a8bac50ebf4a66e71f1b51a25b
# Parent  c152e538b85b099ce20b51104b8b7dd3666aad7c
histedit: select the lowest rev when looking for a root in a revset

When we specify a revision or a revset we just get the last element from the
list. For revsets this can lead to unintended effects where you specify a
revset like only() but instead histedit selects the highest revision in the
set as root. Therefore we should always use the lowest revision number as
root.

diff --git a/hgext/histedit.py b/hgext/histedit.py
--- a/hgext/histedit.py
+++ b/hgext/histedit.py
@@ -565,8 +565,11 @@
                 remote = None
             root = findoutgoing(ui, repo, remote, force, opts)
         else:
-            root = revs[0]
-            root = scmutil.revsingle(repo, root).node()
+            rev = '.'
+            revrange = scmutil.revrange(repo, [revs[0]])
+            if len(revrange) > 0:
+                rev = sorted(revrange)[0]
+            root = repo[rev].node()
 
         keep = opts.get('keep', False)
         revs = between(repo, root, topmost, keep)
diff --git a/tests/test-histedit-arguments.t b/tests/test-histedit-arguments.t
--- a/tests/test-histedit-arguments.t
+++ b/tests/test-histedit-arguments.t
@@ -72,6 +72,26 @@
   [255]
   $ hg up --quiet
 
+
+Test that we pick the minimum of a revrange
+---------------------------------------
+
+  $ HGEDITOR=cat hg histedit '2::' --commands - << EOF
+  > pick eb57da33312f 2 three
+  > pick c8e68270e35a 3 four
+  > pick 08d98a8350f3 4 five
+  > EOF
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg up --quiet
+
+  $ HGEDITOR=cat hg histedit 'tip:2' --commands - << EOF
+  > pick eb57da33312f 2 three
+  > pick c8e68270e35a 3 four
+  > pick 08d98a8350f3 4 five
+  > EOF
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg up --quiet
+
 Run on a revision not descendants of the initial parent
 --------------------------------------------------------------------
 


More information about the Mercurial-devel mailing list