Rev 1938: Improve handling of reparent. in file:///data/jelmer/bzr-svn/trunk/
Jelmer Vernooij
jelmer at samba.org
Mon Oct 6 18:40:51 BST 2008
At file:///data/jelmer/bzr-svn/trunk/
------------------------------------------------------------
revno: 1938
revision-id: jelmer at samba.org-20081006174050-lox5ftblatnlby47
parent: jelmer at samba.org-20081006172235-cp2sm0omf8z7euwl
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: trunk
timestamp: Mon 2008-10-06 19:40:50 +0200
message:
Improve handling of reparent.
modified:
subvertpy/subvertpy/server.py server.py-20081006143330-f9p0l7eih6izgoct-1
=== modified file 'subvertpy/subvertpy/server.py'
--- a/subvertpy/subvertpy/server.py 2008-10-06 17:22:35 +0000
+++ b/subvertpy/subvertpy/server.py 2008-10-06 17:40:50 +0000
@@ -49,7 +49,8 @@
MAJOR_VERSION = 1
MINOR_VERSION = 2
-CAPABILITIES = [literal("edit-pipeline")]
+CAPABILITIES = ["edit-pipeline"]
+MECHANISMS = ["ANONYMOUS"]
class SVNServer:
@@ -63,10 +64,11 @@
def send_greeting(self):
self.send_success(
- MAJOR_VERSION, MINOR_VERSION, [literal("ANONYMOUS")], CAPABILITIES)
+ MAJOR_VERSION, MINOR_VERSION, [literal(x) for x in MECHANISMS],
+ [literal(x) for x in CAPABILITIES])
def send_mechs(self):
- self.send_success([literal("ANONYMOUS")], "")
+ self.send_success([literal(x) for x in MECHANISMS], "")
def send_failure(self, *contents):
self.send_msg([literal("failure"), list(contents)])
@@ -74,17 +76,24 @@
def send_success(self, *contents):
self.send_msg([literal("success"), list(contents)])
+ def send_ack(self):
+ self.send_success([], "")
+
def send_unknown(self, cmd):
self.send_failure([ERR_RA_SVN_UNKNOWN_CMD,
"Unknown command '%s'" % cmd, __file__, 52])
def get_latest_rev(self):
- self.send_success([], "")
+ self.send_ack()
self.send_success(self.repo_backend.get_latest_revnum())
- def check_path(self, path, revnum):
+ def check_path(self, path, rev):
+ if len(rev) == 0:
+ revnum = None
+ else:
+ revnum = rev[0]
kind = self.repo_backend.check_path(path, revnum)
- self.send_success([], "")
+ self.send_ack()
self.send_success(literal({NODE_NONE: "none",
NODE_DIR: "dir",
NODE_FILE: "file",
@@ -102,7 +111,7 @@
else:
changes.append((p, literal(action), ()))
self.send_msg([changes, revno, [author], [date], [message]])
- self.send_success([], "")
+ self.send_ack()
if len(start_rev) == 0:
start_revnum = None
else:
@@ -116,23 +125,29 @@
self.send_msg(literal("done"))
self.send_success()
+ def open_backend(self, url):
+ import urllib
+ (rooturl, location) = urllib.splithost(url)
+ self.repo_backend, self.relpath = self.backend.open_repository(location)
+
def reparent(self, parent):
- self.send_success([], "")
+ self.open_backend(parent)
+ self.send_ack()
self.send_success()
def stat(self, path, revnum):
- self.send_success([], "")
+ self.send_ack()
self.send_success()
- def update(self, rev, target, recurse):
- self.send_success([], "")
+ def update(self, rev, target, recurse, depth=None, send_copyfrom_param=True):
+ self.send_ack()
while True:
msg = self.recv_msg()
assert msg[0] in ["set-path", "finish-report"]
if msg[0] == "finish-report":
break
- self.send_success([], "")
+ self.send_ack()
class Editor:
@@ -178,8 +193,12 @@
def close(self):
self.conn.send_msg(["close-file", [self.id]])
- self.repo_backend.update(Editor(self), rev, target, recurse)
- self.send_success([], "")
+ if len(rev) == 0:
+ revnum = None
+ else:
+ revnum = rev[0]
+ self.repo_backend.update(Editor(self), revnum, target, recurse)
+ self.send_ack()
commands = {
"get-latest-rev": get_latest_rev,
@@ -220,10 +239,7 @@
# TODO: Proper authentication
self.send_success()
- import urllib
- (rooturl, location) = urllib.splithost(url)
-
- self.repo_backend, self.relpath = self.backend.open_repository(location)
+ self.open_backend(url)
self.send_success(self.repo_backend.get_uuid(), url)
# Expect:
@@ -245,11 +261,13 @@
try:
self.inbuffer += self.recv_fn()
(self.inbuffer, ret) = unmarshall(self.inbuffer)
+ self.mutter("IN: %r" % ret)
return ret
except MarshallError, e:
self.mutter('ERROR: %r' % e)
def send_msg(self, data):
+ self.mutter("OUT: %r" % data)
self.send_fn(marshall(data))
def mutter(self, text):
More information about the bazaar-commits
mailing list