[PATCH 2 of 4 phases] phases: implements simple revset symbol

Pierre-Yves David pierre-yves.david at ens-lyon.org
Tue Jan 3 18:19:58 CST 2012


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1325635276 -3600
# Node ID b92c0e00a7d839f7a7f14c2858b790cb3e7bdd8f
# Parent  5bd197de486d13680484560fb56425bb503715ff
phases: implements simple revset symbol

This changeset adds ``public()``, ``draft()`` and ``secret`` symbol for
revset.

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -10,6 +10,7 @@
 import node as nodemod
 import bookmarks as bookmarksmod
 import match as matchmod
+import phases as phasesmod
 from i18n import _
 import encoding
 
@@ -395,6 +396,11 @@
     s = set(repo.changelog.descendants(*args)) | set(args)
     return [r for r in subset if r in s]
 
+def draft(repo, subset, x):
+    """``draft([set])``
+    Changeset in draft phase."""
+    return [r for r in subset if repo._phaserev[r] == phasesmod.draft]
+
 def filelog(repo, subset, x):
     """``filelog(pattern)``
     Changesets connected to the specified filelog.
@@ -725,6 +731,11 @@
     except error.RepoLookupError:
         return []
 
+def public(repo, subset, x):
+    """``public([set])``
+    Changeset in public phase."""
+    return [r for r in subset if repo._phaserev[r] == phasesmod.public]
+
 def removes(repo, subset, x):
     """``removes(pattern)``
     Changesets which remove files matching pattern.
@@ -763,6 +774,11 @@
     cs = set(children(repo, subset, x))
     return [r for r in s if r not in cs]
 
+def secret(repo, subset, x):
+    """``secret([set])``
+    Changeset in secret phase."""
+    return [r for r in subset if repo._phaserev[r] == phasesmod.secret]
+
 def sort(repo, subset, x):
     """``sort(set[, [-]key...])``
     Sort set by keys. The default sort order is ascending, specify a key
@@ -861,6 +877,7 @@
     "date": date,
     "desc": desc,
     "descendants": descendants,
+    "draft": draft,
     "file": hasfile,
     "filelog": filelog,
     "first": first,
@@ -881,11 +898,13 @@
     "p2": p2,
     "parents": parents,
     "present": present,
+    "public": public,
     "removes": removes,
     "rev": rev,
     "reverse": reverse,
     "roots": roots,
     "sort": sort,
+    "secret": secret,
     "tag": tag,
     "tagged": tagged,
     "user": user,
diff --git a/tests/test-phases.t b/tests/test-phases.t
--- a/tests/test-phases.t
+++ b/tests/test-phases.t
@@ -134,3 +134,19 @@
   2 0 C
   1 0 B
   0 0 A
+  $ cd ..
+
+Test revset
+
+  $ cd initialrepo
+  $ hglog -r 'public()'
+  0 0 A
+  1 0 B
+  2 0 C
+  3 0 D
+  6 0 B'
+  $ hglog -r 'draft()'
+  $ hglog -r 'secret()'
+  4 2 E
+  5 2 H
+  7 2 merge B' and E


More information about the Mercurial-devel mailing list