[PATCH STABLE] revset: avoid a ValueError when 'only()' is given an empty set
Matt Harbison
matt_harbison at yahoo.com
Fri Jul 18 19:26:34 CDT 2014
# HG changeset patch
# User Matt Harbison <matt_harbison at yahoo.com>
# Date 1405727216 14400
# Fri Jul 18 19:46:56 2014 -0400
# Branch stable
# Node ID aa0ed0dbf8bf7e69ac7e454d5d22cb58373e3d0d
# Parent 584bbfd1b50dad59871dcc7eba258491a2cb395f
revset: avoid a ValueError when 'only()' is given an empty set
This previously died in _revdescendants() taking the min() of the first set to
only(), when it was empty. An empty second set already worked. Likewise,
descendants() already handled an empty set.
diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -399,6 +399,9 @@
args = getargs(x, 1, 2, _('only takes one or two arguments'))
include = getset(repo, spanset(repo), args[0]).set()
if len(args) == 1:
+ if len(include) == 0:
+ return baseset([])
+
descendants = set(_revdescendants(repo, include, False))
exclude = [rev for rev in cl.headrevs()
if not rev in descendants and not rev in include]
diff --git a/tests/test-revset.t b/tests/test-revset.t
--- a/tests/test-revset.t
+++ b/tests/test-revset.t
@@ -427,6 +427,16 @@
7
8
9
+
+Test empty set input
+ $ log 'only(p2())'
+ $ log 'only(p1(), p2())'
+ 0
+ 1
+ 2
+ 4
+ 8
+ 9
$ log 'outgoing()'
8
9
More information about the Mercurial-devel
mailing list