phases: implements simple revset symbol

This changeset adds ``public()``, ``draft()`` and ``secret`` symbol for
revset.
This commit is contained in:
Pierre-Yves David 2012-01-06 10:04:20 +01:00
parent 5262f88500
commit b6988087ea
2 changed files with 38 additions and 1 deletions

View File

@ -6,7 +6,7 @@
# GNU General Public License version 2 or any later version.
import re
import parser, util, error, discovery, hbisect
import parser, util, error, discovery, hbisect, phases
import node as nodemod
import bookmarks as bookmarksmod
import match as matchmod
@ -395,6 +395,12 @@ def descendants(repo, subset, x):
s = set(repo.changelog.descendants(*args)) | set(args)
return [r for r in subset if r in s]
def draft(repo, subset, x):
"""``draft()``
Changeset in draft phase."""
getargs(x, 0, 0, _("draft takes no arguments"))
return [r for r in subset if repo._phaserev[r] == phases.draft]
def filelog(repo, subset, x):
"""``filelog(pattern)``
Changesets connected to the specified filelog.
@ -725,6 +731,12 @@ def present(repo, subset, x):
except error.RepoLookupError:
return []
def public(repo, subset, x):
"""``public()``
Changeset in public phase."""
getargs(x, 0, 0, _("public takes no arguments"))
return [r for r in subset if repo._phaserev[r] == phases.public]
def removes(repo, subset, x):
"""``removes(pattern)``
Changesets which remove files matching pattern.
@ -763,6 +775,12 @@ def roots(repo, subset, x):
cs = set(children(repo, subset, x))
return [r for r in s if r not in cs]
def secret(repo, subset, x):
"""``secret()``
Changeset in secret phase."""
getargs(x, 0, 0, _("secret takes no arguments"))
return [r for r in subset if repo._phaserev[r] == phases.secret]
def sort(repo, subset, x):
"""``sort(set[, [-]key...])``
Sort set by keys. The default sort order is ascending, specify a key
@ -861,6 +879,7 @@ symbols = {
"date": date,
"desc": desc,
"descendants": descendants,
"draft": draft,
"file": hasfile,
"filelog": filelog,
"first": first,
@ -881,11 +900,13 @@ symbols = {
"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,

View File

@ -134,3 +134,19 @@ Test secret changeset are not pull
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