diff --git a/hgext/remotenames.py b/hgext/remotenames.py --- a/hgext/remotenames.py +++ b/hgext/remotenames.py @@ -30,7 +30,9 @@ from mercurial.node import ( from mercurial import ( logexchange, namespaces, + pycompat, registrar, + templatekw, ) # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for @@ -41,6 +43,7 @@ testedwith = 'ships-with-hg-core' configtable = {} configitem = registrar.configitem(configtable) +templatekeyword = registrar.templatekeyword() configitem('remotenames', 'bookmarks', default=True, @@ -205,3 +208,51 @@ def reposetup(ui, repo): nodemap = lambda repo, node: repo._remotenames.nodetobranch().get(node, [])) repo.names.addnamespace(remotebranchns) + +@templatekeyword('remotenames') +def remotenameskw(**args): + """:remotenames: List of strings. List of remote names associated with the + changeset. + """ + args = pycompat.byteskwargs(args) + repo, ctx = args['repo'], args['ctx'] + + remotenames = [] + if 'remotebookmarks' in repo.names: + remotenames = repo.names['remotebookmarks'].names(repo, ctx.node()) + + if 'remotebranches' in repo.names: + remotenames += repo.names['remotebranches'].names(repo, ctx.node()) + + return templatekw.showlist('remotename', remotenames, args, + plural='remotenames') + +@templatekeyword('remotebookmarks') +def remotebookmarkskw(**args): + """:remotebookmarks: List of strings. List of remote bookmarks associated + with the changeset. + """ + args = pycompat.byteskwargs(args) + repo, ctx = args['repo'], args['ctx'] + + remotebmarks = [] + if 'remotebookmarks' in repo.names: + remotebmarks = repo.names['remotebookmarks'].names(repo, ctx.node()) + + return templatekw.showlist('remotebookmark', remotebmarks, args, + plural='remotebookmarks') + +@templatekeyword('remotebranches') +def remotebrancheskw(**args): + """:remotebranches: List of strings. List of remote branches associated + with the changeset. + """ + args = pycompat.byteskwargs(args) + repo, ctx = args['repo'], args['ctx'] + + remotebranches = [] + if 'remotebranches' in repo.names: + remotebranches = repo.names['remotebranches'].names(repo, ctx.node()) + + return templatekw.showlist('remotebranch', remotebranches, args, + plural='remotebranches') diff --git a/tests/test-logexchange.t b/tests/test-logexchange.t --- a/tests/test-logexchange.t +++ b/tests/test-logexchange.t @@ -182,3 +182,47 @@ Pulling form the new server date: Thu Jan 01 00:00:00 1970 +0000 summary: Added a +Testing the templates provided by remotenames extension + +`remotenames` keyword + + $ hg log -G -T "{rev}:{node|short} {remotenames}\n" + @ 8:3e1487808078 $TESTTMP/server2/wat default/wat + | + | o 7:ec2426147f0e $TESTTMP/server2/default default/default + | | + | o 6:87d6d6676308 $TESTTMP/server2/bar default/bar + | | + | o 5:825660c69f0c + |/ + o 4:aa98ab95a928 + | + o 3:62615734edd5 $TESTTMP/server2/foo default/foo + | + o 2:28ad74487de9 + | + o 1:29becc82797a + | + o 0:18d04c59bb5d + +`remotebookmarks` and `remotebranches` keywords + + $ hg log -G -T "{rev}:{node|short} [{remotebookmarks}] ({remotebranches})" + @ 8:3e1487808078 [] ($TESTTMP/server2/wat default/wat) + | + | o 7:ec2426147f0e [] ($TESTTMP/server2/default default/default) + | | + | o 6:87d6d6676308 [$TESTTMP/server2/bar default/bar] () + | | + | o 5:825660c69f0c [] () + |/ + o 4:aa98ab95a928 [] () + | + o 3:62615734edd5 [$TESTTMP/server2/foo default/foo] () + | + o 2:28ad74487de9 [] () + | + o 1:29becc82797a [] () + | + o 0:18d04c59bb5d [] () +