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.
--- a/mercurial/revset.py Tue Jul 15 23:34:13 2014 +0900
+++ b/mercurial/revset.py Fri Jul 18 19:46:56 2014 -0400
@@ -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]
--- a/tests/test-revset.t Tue Jul 15 23:34:13 2014 +0900
+++ b/tests/test-revset.t Fri Jul 18 19:46:56 2014 -0400
@@ -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