mercurial/remotenames.py
changeset 35236 5a62910948d2
child 35237 8df8ce2cc5dd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/remotenames.py	Thu Oct 05 00:02:02 2017 +0530
@@ -0,0 +1,43 @@
+# remotenames.py
+#
+# Copyright 2017 Augie Fackler <raf@durin42.com>
+# Copyright 2017 Sean Farley <sean@farley.io>
+#
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2 or any later version.
+
+from __future__ import absolute_import
+
+from .node import hex
+
+def pullremotenames(localrepo, remoterepo):
+    """
+    pulls bookmarks and branches information of the remote repo during a
+    pull or clone operation.
+    localrepo is our local repository
+    remoterepo is the peer instance
+    """
+    remotepath = remoterepo.url()
+    bookmarks = remoterepo.listkeys('bookmarks')
+    # on a push, we don't want to keep obsolete heads since
+    # they won't show up as heads on the next pull, so we
+    # remove them here otherwise we would require the user
+    # to issue a pull to refresh the storage
+    bmap = {}
+    repo = localrepo.unfiltered()
+    for branch, nodes in remoterepo.branchmap().iteritems():
+        bmap[branch] = []
+        for node in nodes:
+            if node in repo and not repo[node].obsolete():
+                bmap[branch].append(hex(node))
+
+    # writing things to ui till the time we import the saving functionality
+    ui = localrepo.ui
+    ui.write("\nRemotenames info\npath: %s\n" % remotepath)
+    ui.write("Bookmarks:\n")
+    for bm, node in bookmarks.iteritems():
+        ui.write("%s: %s\n" % (bm, node))
+    ui.write("Branches:\n")
+    for branch, node in bmap.iteritems():
+        ui.write("%s: %s\n" % (branch, node))
+    ui.write("\n")