Mercurial > hg-stable
changeset 20806:d66862b87ae6
histedit: select the lowest rev when looking for a root in a revset (bc)
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.
author | David Soria Parra <davidsp@fb.com> |
---|---|
date | Thu, 13 Mar 2014 16:05:06 -0700 |
parents | c5aaeca0cfbf |
children | 91d28bd0e04e |
files | hgext/histedit.py tests/test-histedit-arguments.t |
diffstat | 2 files changed, 34 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/histedit.py Tue Mar 18 15:56:24 2014 -0700 +++ b/hgext/histedit.py Thu Mar 13 16:05:06 2014 -0700 @@ -158,7 +158,6 @@ 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 @@ -568,8 +567,11 @@ remote = None root = findoutgoing(ui, repo, remote, force, opts) else: - root = revs[0] - root = scmutil.revsingle(repo, root).node() + rootrevs = list(repo.set('roots(%lr)', revs)) + if len(rootrevs) != 1: + raise util.Abort(_('The specified revisions must have ' + + 'exactly one common root')) + root = rootrevs[0].node() keep = opts.get('keep', False) revs = between(repo, root, topmost, keep)
--- a/tests/test-histedit-arguments.t Tue Mar 18 15:56:24 2014 -0700 +++ b/tests/test-histedit-arguments.t Thu Mar 13 16:05:06 2014 -0700 @@ -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 -------------------------------------------------------------------- @@ -198,3 +218,12 @@ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved 0 files updated, 0 files merged, 0 files removed, 0 files unresolved saved backup bundle to $TESTTMP/foo/.hg/strip-backup/*-backup.hg (glob) + + $ hg update -q 2 + $ echo x > x + $ hg add x + $ hg commit -m'x' x + created new head + $ hg histedit -r 'heads(all())' + abort: The specified revisions must have exactly one common root + [255]