[PATCH evolve-ext] fold: disallow multiple revisions without --exact

Martin von Zweigbergk martinvonz at google.com
Fri Nov 4 23:58:24 UTC 2016


# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1478303512 25200
#      Fri Nov 04 16:51:52 2016 -0700
# Node ID bb80851fe9a6e14263f0076074108556377141f9
# Parent  cb2bac3253fbd52894ffcb4719a148fe6a3da38b
fold: disallow multiple revisions without --exact

It's very easy to think that "hg fold 4::6" will fold exactly those
revisions. In reality, it will fold those *and* any revisions between
them and the working copy. It seems very likely that users who pass
more than one revision wants to fold exactly those revisions, so let's
abort and hint that they may be looking for --exact.

diff -r cb2bac3253fb -r bb80851fe9a6 hgext/evolve.py
--- a/hgext/evolve.py	Wed Nov 02 18:56:44 2016 +0100
+++ b/hgext/evolve.py	Fri Nov 04 16:51:52 2016 -0700
@@ -3115,6 +3115,11 @@
      revs = scmutil.revrange(repo, revs)

      if not opts['exact']:
+        if len(revs) > 1:
+            raise error.Abort(_("cannot fold from working directory to "
+                                "more than one revision"),
+                              hint=_("did you mean to use --exact?"))
+
          # Try to extend given revision starting from the working directory
          extrevs = repo.revs('(%ld::.) or (.::%ld)', revs, revs)
          discardedrevs = [r for r in revs if r not in extrevs]
diff -r cb2bac3253fb -r bb80851fe9a6 tests/test-evolve.t
--- a/tests/test-evolve.t	Wed Nov 02 18:56:44 2016 +0100
+++ b/tests/test-evolve.t	Fri Nov 04 16:51:52 2016 -0700
@@ -688,7 +688,11 @@
    $ hg fold -r 4 -r 6 --exact
    abort: cannot fold non-linear revisions (multiple roots given)
    [255]
-  $ hg fold 10 1
+  $ hg fold 4::5
+  abort: cannot fold from working directory to more than one revision
+  (did you mean to use --exact?)
+  [255]
+  $ hg fold 1
    abort: cannot fold non-linear revisions
    (given revisions are unrelated to parent of working directory)
    [255]
diff -r cb2bac3253fb -r bb80851fe9a6 tests/test-userguide.t
--- a/tests/test-userguide.t	Wed Nov 02 18:56:44 2016 +0100
+++ b/tests/test-userguide.t	Fri Nov 04 16:51:52 2016 -0700
@@ -109,7 +109,7 @@
    7:05e61aab8294  step 1
    8:be6d5bc8e4cc  step 2
    9:35f432d9f7c1  step 3
-  $ hg fold -d '0 0' -m 'fix bug 64' -r 7::
+  $ hg fold -d '0 0' -m 'fix bug 64' -r 7
    3 changesets folded
    1 files updated, 0 files merged, 0 files removed, 0 files unresolved
    $ hg --hidden shortlog -G -r 6::


More information about the Mercurial-devel mailing list