remotebranches: add remotebranches template keyword

Return names of all remote branches heads on a revision.
This commit is contained in:
Patrick Mezard 2012-06-20 17:23:51 +02:00
parent f0fbb42e99
commit 9c1e5dd717
3 changed files with 30 additions and 2 deletions

4
README
View File

@ -42,3 +42,7 @@ a repository whose path is listed in the ``upstream`` field of the
``remotebranches.upstream`` setting, it defaults to behaving ``remotebranches.upstream`` setting, it defaults to behaving
identically to ``pushed()``. The ``remotebranches()`` revset simply identically to ``pushed()``. The ``remotebranches()`` revset simply
returns all remote branches head changesets. returns all remote branches head changesets.
When template keywords can be registered (Mercurial 1.5 and later),
remotebranches adds a ``remotebranches`` keyword returning a space
separated list of all names of remote branches heads on a changeset.

View File

@ -15,6 +15,13 @@ try:
except ImportError: except ImportError:
revset = None revset = None
try:
from mercurial import templatekw
# force demandimport to load templatekw
templatekw.keywords
except ImportError:
templatekw = None
from hgext import schemes from hgext import schemes
def reposetup(ui, repo): def reposetup(ui, repo):
@ -207,3 +214,19 @@ if revset is not None:
revset.symbols.update({'upstream': upstream, revset.symbols.update({'upstream': upstream,
'pushed': pushed, 'pushed': pushed,
'remotebranches': remotebranchesrevset}) 'remotebranches': remotebranchesrevset})
def remotebrancheskw(**args):
""":remotebranches: List of strings. Any remote branch associated
with the changeset.
"""
repo, ctx = args['repo'], args['ctx']
remotenodes = {}
for name, node in repo._remotebranches.iteritems():
remotenodes.setdefault(node, []).append(name)
if ctx.node() in remotenodes:
names = sorted(remotenodes[ctx.node()])
return templatekw.showlist('remotebranch', names,
plural='remotebranches', **args)
if templatekw is not None:
templatekw.keywords['remotebranches'] = remotebrancheskw

View File

@ -199,9 +199,10 @@ but configured, it'll do the expected thing:
| | summary: add d | | summary: add d
| | | |
Test remotebranches revset Test remotebranches revset and keyword
$ hg log -r 'remotebranches()' --template '{rev}:{node|short} {tags}\n' $ hg log -r 'remotebranches()' \
> --template '{rev}:{node|short} {remotebranches}\n'
1:7c3bad9141dc alpha/default 1:7c3bad9141dc alpha/default
2:95cb4ab9fe1d alpha/stable 2:95cb4ab9fe1d alpha/stable
3:78f83396d79e beta/default 3:78f83396d79e beta/default