[PATCH 3 of 4] Add extras/addextras transfer support to ssh repositories

David Soria Parra sn_ at gmx.net
Wed Aug 27 05:03:21 CDT 2008


# HG changeset patch
# User David Soria Parra <dsp at php.net>
# Date 1219830241 -7200
# Node ID d31f144fd74c93637970e212d605c5455b8dc4f8
# Parent  3253bef923ab49b535362d36b5f979b955481f4e
Add extras/addextras transfer support to ssh repositories

diff --git a/mercurial/sshrepo.py b/mercurial/sshrepo.py
--- a/mercurial/sshrepo.py
+++ b/mercurial/sshrepo.py
@@ -7,7 +7,7 @@
 
 from node import bin, hex
 from i18n import _
-import repo, os, re, util
+import repo, os, re, util, cPickle
 
 class remotelock(object):
     def __init__(self, repo):
@@ -243,5 +243,18 @@
 
     def stream_out(self):
         return self.do_cmd('stream_out')
+            
+    def addextras(self, extras):
+        try:
+            self.call("addextras", extras=cPickle.dumps(extras))
+        except EOFError:
+            self.ui.note(_("remote repository doesn't support transfer of user defined data\n"))
+
+    def extras(self):
+        try:
+            return cPickle.loads(self.call("extras"))
+        except EOFError:
+            self.ui.note(_("remote repository doesn't support transfer of extra information\n"))
+        return {}
 
 instance = sshrepository
diff --git a/mercurial/sshserver.py b/mercurial/sshserver.py
--- a/mercurial/sshserver.py
+++ b/mercurial/sshserver.py
@@ -8,7 +8,7 @@
 
 from i18n import _
 from node import bin, hex
-import os, streamclone, sys, tempfile, util, hook
+import os, streamclone, sys, tempfile, util, hook, cPickle
 
 class sshserver(object):
     def __init__(self, ui, repo):
@@ -211,3 +211,12 @@
         except streamclone.StreamException, inst:
             self.fout.write(str(inst))
             self.fout.flush()
+
+    def do_extras(self):
+        self.respond(cPickle.dumps(self.repo.extras()))
+
+    def do_addextras(self):
+        arg, extras = self.getarg()
+        assert arg == 'extras'
+        self.repo.addextras(cPickle.loads(extras))
+        self.respond('')


More information about the Mercurial-devel mailing list