[PATCH STABLE] extdiff: abort if an empty revision is given with --patch
Matt Harbison
mharbison72 at gmail.com
Sat Oct 31 20:53:32 CDT 2015
# HG changeset patch
# User Matt Harbison <matt_harbison at yahoo.com>
# Date 1446342346 14400
# Sat Oct 31 21:45:46 2015 -0400
# Branch stable
# Node ID c735abc328fefe3d0695a8d82b68ee0030f0e5bc
# Parent 6474b64045fb83733d6f7b774bbc8b2869bd1fed
extdiff: abort if an empty revision is given with --patch
I ran into this when I forgot --hidden to make a precursor visible, but it will
occur any time one --rev evaluates to an empty set. The error message is
probably slightly confusing since it can now be seen when "--rev" is actually
specified twice, but this seems better than the previous behavior of comparing
the first --rev argument against itself. Since the issue isn't necessarily a
missing --hidden, I'm hesitant to abort this separately and mention the --hidden
flag.
The reason forgetting --hidden causes the revision to be duplicated is that
scmutil.revpair() will calculate a revrange that looks like this:
$ hg extdiff --patch --rev 'precursors(29204)' --rev 29204
<addset <baseset+ []>, <baseset [29204]>>
... which has 29204 as its first and last entry. Since multiple --rev args are
provided, this causes None to _not_ be returned as the second item in the tuple.
The extdiff functionality without --patch probably could use similar logic, but
I've only ever run into this with --patch when using it to compare with a
precursor. Given that nobody has ever complained about it, I'm hesitant to
change that this close to a release.
diff --git a/hgext/extdiff.py b/hgext/extdiff.py
--- a/hgext/extdiff.py
+++ b/hgext/extdiff.py
@@ -150,7 +150,7 @@
if opts.get('patch'):
if subrepos:
raise error.Abort(_('--patch cannot be used with --subrepos'))
- if node2 is None:
+ if node2 is None or node1a == node2:
raise error.Abort(_('--patch requires two revisions'))
else:
mod_a, add_a, rem_a = map(set, repo.status(node1a, node2, matcher,
diff --git a/tests/test-extdiff.t b/tests/test-extdiff.t
--- a/tests/test-extdiff.t
+++ b/tests/test-extdiff.t
@@ -70,6 +70,12 @@
[1]
#endif
+Specifying an empty revision to --patch should abort.
+
+ $ hg extdiff --patch --rev 'ancestor()' --rev 1
+ abort: --patch requires two revisions
+ [255]
+
Test diff during merge:
$ hg update -C 0
More information about the Mercurial-devel
mailing list