[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