diff mercurial/sshserver.py @ 11369:02a4373ca5cd

pushkey: add ssh support
author Matt Mackall <mpm@selenic.com>
date Wed, 16 Jun 2010 16:05:13 -0500
parents 04e1e6743809
children ee1ed6afac21
line wrap: on
line diff
--- a/mercurial/sshserver.py	Wed Jun 16 16:04:46 2010 -0500
+++ b/mercurial/sshserver.py	Wed Jun 16 16:05:13 2010 -0500
@@ -8,12 +8,12 @@
 
 from i18n import _
 from node import bin, hex
-import streamclone, util, hook
+import streamclone, util, hook, pushkey
 import os, sys, tempfile, urllib, copy
 
 class sshserver(object):
 
-    caps = 'unbundle lookup changegroupsubset branchmap'.split()
+    caps = 'unbundle lookup changegroupsubset branchmap pushkey'.split()
 
     def __init__(self, ui, repo):
         self.ui = ui
@@ -223,3 +223,18 @@
         except streamclone.StreamException, inst:
             self.fout.write(str(inst))
             self.fout.flush()
+
+    def do_pushkey(self):
+        arg, key = self.getarg()
+        arg, namespace = self.getarg()
+        arg, new = self.getarg()
+        arg, old = self.getarg()
+        r = pushkey.push(self.repo, namespace, key, old, new)
+        self.respond('%s\n' % int(r))
+
+    def do_listkeys(self):
+        arg, namespace = self.getarg()
+        d = pushkey.list(self.repo, namespace).items()
+        t = '\n'.join(['%s\t%s' % (k.encode('string-escape'),
+                                   v.encode('string-escape')) for k, v in d])
+        self.respond(t)