# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 2018-03-12 13:08:26 # Node ID a61fff493d9888935a1ff5e48bb823499f47e832 # Parent 9938992c5bae0b470574f7bab7762daee51b1ef6 remotenames: show remote bookmarks in `hg bookmarks` This patch adds functionality to show list of remote bookmarks in `hg bookmarks` command. There is some indenting problem in the test output as the current bookmark printing code in core can handle bookmark names of size 25 only gracefully. The idea is taken from hgremotenames extension which has --remote and --all flags to show remote bookmarks. However, this patch by defaults support showing list of remote bookmarks if remotenames extension is enabled and remotebookmarks are turned on. Differential Revision: https://phab.mercurial-scm.org/D2808 diff --git a/hgext/remotenames.py b/hgext/remotenames.py --- a/hgext/remotenames.py +++ b/hgext/remotenames.py @@ -32,6 +32,8 @@ from mercurial.node import ( bin, ) from mercurial import ( + bookmarks, + extensions, logexchange, namespaces, pycompat, @@ -228,6 +230,24 @@ class remotenames(object): self._nodetohoists.setdefault(node[0], []).append(name) return self._nodetohoists +def wrapprintbookmarks(orig, ui, repo, bmarks, **opts): + if 'remotebookmarks' not in repo.names: + return + ns = repo.names['remotebookmarks'] + + for name in ns.listnames(repo): + nodes = ns.nodes(repo, name) + if not nodes: + continue + node = nodes[0] + + bmarks[name] = (node, ' ', '') + + return orig(ui, repo, bmarks, **opts) + +def extsetup(ui): + extensions.wrapfunction(bookmarks, '_printbookmarks', wrapprintbookmarks) + def reposetup(ui, repo): if not repo.local(): return diff --git a/tests/test-logexchange.t b/tests/test-logexchange.t --- a/tests/test-logexchange.t +++ b/tests/test-logexchange.t @@ -327,3 +327,9 @@ Local bookmark should take precedence ov date: Thu Jan 01 00:00:00 1970 +0000 summary: added bar + $ hg bookmarks + $TESTTMP/server2/bar 6:87d6d6676308 + $TESTTMP/server2/foo 3:62615734edd5 + default/bar 6:87d6d6676308 + default/foo 3:62615734edd5 + * foo 8:3e1487808078