Mercurial > evolve
diff src/topic/revset.py @ 1843:0ba067a97d06
revset: add a topic() revset for querying topics
author | Augie Fackler <augie@google.com> |
---|---|
date | Wed, 10 Jun 2015 15:26:50 -0400 |
parents | |
children | 24d8053020a2 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/topic/revset.py Wed Jun 10 15:26:50 2015 -0400 @@ -0,0 +1,23 @@ +from mercurial import revset + +def topicset(repo, subset, x): + """`topic([topic])` + Specified topic or all changes with any topic specified. + + If `topic` starts with `re:` the remainder of the name is treated + as a regular expression. + + TODO: make `topic(revset)` work the same as `branch(revset)`. + """ + args = revset.getargs(x, 0, 1, 'topic takes one or no arguments') + if args: + # match a specific topic + topic = revset.getstring(args[0], 'topic() argument must be a string') + _kind, _pattern, matcher = revset._stringmatcher(topic) + else: + matcher = lambda t: bool(t) + drafts = subset.filter(lambda r: repo[r].mutable()) + return drafts.filter(lambda r: matcher(repo[r].extra().get('topic', ''))) + +def modsetup(): + revset.symbols.update({'topic': topicset})