D2808: remotenames: show remote bookmarks in `hg bookmarks`

pulkit (Pulkit Goyal) phabricator at mercurial-scm.org
Mon Mar 12 13:45:34 UTC 2018


pulkit created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  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.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2808

AFFECTED FILES
  hgext/remotenames.py
  tests/test-logexchange.t

CHANGE DETAILS

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 @@
   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
diff --git a/hgext/remotenames.py b/hgext/remotenames.py
--- a/hgext/remotenames.py
+++ b/hgext/remotenames.py
@@ -34,6 +34,8 @@
     bin,
 )
 from mercurial import (
+    bookmarks,
+    extensions,
     logexchange,
     namespaces,
     registrar,
@@ -222,6 +224,24 @@
                     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



To: pulkit, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list