mercurial/sshserver.py
changeset 8562 e3495c399006
parent 8312 b87a50b7125c
child 9198 061eeb602354
--- a/mercurial/sshserver.py	Sun May 24 02:56:03 2009 -0500
+++ b/mercurial/sshserver.py	Sat May 23 17:02:49 2009 +0200
@@ -9,7 +9,7 @@
 from i18n import _
 from node import bin, hex
 import streamclone, util, hook
-import os, sys, tempfile
+import os, sys, tempfile, urllib
 
 class sshserver(object):
     def __init__(self, ui, repo):
@@ -64,6 +64,15 @@
             success = 0
         self.respond("%s %s\n" % (success, r))
 
+    def do_branchmap(self):
+        branchmap = self.repo.branchmap()
+        heads = []
+        for branch, nodes in branchmap.iteritems():
+            branchname = urllib.quote(branch)
+            branchnodes = [hex(node) for node in nodes]
+            heads.append('%s %s' % (branchname, ' '.join(branchnodes)))
+        self.respond('\n'.join(heads))
+
     def do_heads(self):
         h = self.repo.heads()
         self.respond(" ".join(map(hex, h)) + "\n")
@@ -77,7 +86,7 @@
         capabilities: space separated list of tokens
         '''
 
-        caps = ['unbundle', 'lookup', 'changegroupsubset']
+        caps = ['unbundle', 'lookup', 'changegroupsubset', 'branchmap']
         if self.ui.configbool('server', 'uncompressed'):
             caps.append('stream=%d' % self.repo.changelog.version)
         self.respond("capabilities: %s\n" % (' '.join(caps),))