named branches: client branchmap wire protocol support (issue736)
authorHenrik Stuart <henrik.stuart@edlund.dk>
Sat, 23 May 2009 17:03:51 +0200
changeset 8563 f8ff65a83169
parent 8562 e3495c399006
child 8564 6b9ec23b09fc
named branches: client branchmap wire protocol support (issue736) Co-contributor: Sune Foldager <cryo@cyanite.org>
mercurial/httprepo.py
mercurial/sshrepo.py
--- a/mercurial/httprepo.py	Sat May 23 17:02:49 2009 +0200
+++ b/mercurial/httprepo.py	Sat May 23 17:03:51 2009 +0200
@@ -145,6 +145,19 @@
         except:
             raise error.ResponseError(_("unexpected response:"), d)
 
+    def branchmap(self):
+        d = self.do_read("branchmap")
+        try:
+            branchmap = {}
+            for branchpart in d.splitlines():
+                branchheads = branchpart.split(' ')
+                branchname = urllib.unquote(branchheads[0])
+                branchheads = [bin(x) for x in branchheads[1:]]
+                branchmap[branchname] = branchheads
+            return branchmap
+        except:
+            raise error.ResponseError(_("unexpected response:"), d)
+
     def branches(self, nodes):
         n = " ".join(map(hex, nodes))
         d = self.do_read("branches", nodes=n)
--- a/mercurial/sshrepo.py	Sat May 23 17:02:49 2009 +0200
+++ b/mercurial/sshrepo.py	Sat May 23 17:03:51 2009 +0200
@@ -8,7 +8,7 @@
 from node import bin, hex
 from i18n import _
 import repo, util, error
-import re
+import re, urllib
 
 class remotelock(object):
     def __init__(self, repo):
@@ -166,6 +166,19 @@
         except:
             self.abort(error.ResponseError(_("unexpected response:"), d))
 
+    def branchmap(self):
+        d = self.call("branchmap")
+        try:
+            branchmap = {}
+            for branchpart in d.splitlines():
+                branchheads = branchpart.split(' ')
+                branchname = urllib.unquote(branchheads[0])
+                branchheads = [bin(x) for x in branchheads[1:]]
+                branchmap[branchname] = branchheads
+            return branchmap
+        except:
+            raise error.ResponseError(_("unexpected response:"), d)
+
     def branches(self, nodes):
         n = " ".join(map(hex, nodes))
         d = self.call("branches", nodes=n)