[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