revsets: define a none() revset
authorMartin von Zweigbergk <martinvonz@google.com>
Mon, 11 Jun 2018 11:37:21 -0700
changeset 38275 f1d55ae2c5c8
parent 38274 99188a7c8717
child 38276 fa4a286410a5
revsets: define a none() revset This can be useful for default values in corp-wide configuration (e.g. for commits to hide, which defaults to none()), and perhaps in scripts. I named it none() rather than empty() to match all(). Differential Revision: https://phab.mercurial-scm.org/D3713
mercurial/revset.py
tests/test-revset2.t
--- a/mercurial/revset.py	Mon Jun 11 19:24:01 2018 +0200
+++ b/mercurial/revset.py	Mon Jun 11 11:37:21 2018 -0700
@@ -1346,6 +1346,14 @@
     result = baseset([rn])
     return result & subset
 
+@predicate('none()', safe=True)
+def none(repo, subset, x):
+    """No changesets.
+    """
+    # i18n: "none" is a keyword
+    getargs(x, 0, 0, _("none takes no arguments"))
+    return baseset()
+
 @predicate('obsolete()', safe=True)
 def obsolete(repo, subset, x):
     """Mutable changeset with a newer version."""
--- a/tests/test-revset2.t	Mon Jun 11 19:24:01 2018 +0200
+++ b/tests/test-revset2.t	Mon Jun 11 11:37:21 2018 -0700
@@ -584,6 +584,9 @@
   hg: parse error: empty string is not a valid revision
   [255]
 
+test empty revset
+  $ hg log 'none()'
+
 we can use patterns when searching for tags
 
   $ log 'tag("1..*")'