# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 2017-12-23 09:43:37 # Node ID 5a53af7d09aa7c45b8767d418d4aa925a0f2dee1 # Parent 382aefea8fafdd1e31606f26d1c03dd827558854 remotenames: introduce new template keywords for remotenames This patch introduces three new template keywords 'remotenames', 'remotebookmarks', 'remotebranches' to show remotenames, remotebookmarks and remotebranches associated to a changeset. This is a part of moving hgremotenames extension to core. The remotenames template keyword was present in the extension and the rest of the two are not present in the hgremotenames extension and are introduced in this patch. hgremotenames: https://bitbucket.org/seanfarley/hgremotenames Differential Revision: https://phab.mercurial-scm.org/D1759 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 [] () +