Add addchangegroup to the ssh protocol
authorMatt Mackall <mpm@selenic.com>
Wed, 06 Jul 2005 22:23:57 -0800
changeset 639 31cebba881a0
parent 638 35f7adfefa69
child 640 b48b91d3fb4a
Add addchangegroup to the ssh protocol
mercurial/commands.py
mercurial/hg.py
--- a/mercurial/commands.py	Wed Jul 06 22:23:27 2005 -0800
+++ b/mercurial/commands.py	Wed Jul 06 22:23:57 2005 -0800
@@ -923,6 +923,15 @@
 
                 out.flush()
 
+            elif cmd == "addchangegroup":
+                if not lock:
+                    respond("not locked")
+                    continue
+                respond("")
+
+                r = repo.addchangegroup(fin)
+                respond("")
+
     def openlog(opt, default):
         if opts[opt] and opts[opt] != '-': return open(opts[opt], 'w')
         else: return default
--- a/mercurial/hg.py	Wed Jul 06 22:23:27 2005 -0800
+++ b/mercurial/hg.py	Wed Jul 06 22:23:57 2005 -0800
@@ -1715,6 +1715,21 @@
         f = self.do_cmd("changegroup", roots=n)
         return self.pipei
 
+    def addchangegroup(self, cg):
+        d = self.call("addchangegroup")
+        if d:
+            raise RepoError("push refused: %s", d)
+
+        while 1:
+            d = cg.read(4096)
+            if not d: break
+            self.pipeo.write(d)
+
+        self.pipeo.flush()
+
+        l = int(self.pipei.readline())
+        return self.pipei.read(l)
+
 def repository(ui, path=None, create=0):
     if path:
         if path.startswith("http://"):