sshrepo: add passing of lookup exceptions
authorEric Hopper <hopper@omnifarious.org>
Sat, 09 Sep 2006 18:25:06 -0700
changeset 3447 ef1032c223e7
parent 3446 0b450267cf47
child 3448 6ca49c5fe268
sshrepo: add passing of lookup exceptions
mercurial/sshrepo.py
mercurial/sshserver.py
--- a/mercurial/sshrepo.py	Sat Sep 09 18:25:06 2006 -0700
+++ b/mercurial/sshrepo.py	Sat Sep 09 18:25:06 2006 -0700
@@ -133,9 +133,14 @@
 
     def lookup(self, key):
         d = self.call("lookup", key=key)
+        success, data = d[:-1].split(" ", 1)
         try:
-            return bin(d[:-1])
+            if int(success):
+                return bin(data)
+            else:
+                raise data
         except:
+            raise
             raise hg.RepoError("unexpected response '%s'" % (d[:400] + "..."))
 
     def heads(self):
--- a/mercurial/sshserver.py	Sat Sep 09 18:25:06 2006 -0700
+++ b/mercurial/sshserver.py	Sat Sep 09 18:25:06 2006 -0700
@@ -51,7 +51,13 @@
     def do_lookup(self):
         arg, key = self.getarg()
         assert arg == 'key'
-        self.respond(hex(self.repo.lookup(key)) + "\n")
+        try:
+            r = hex(self.repo.lookup(key))
+            success = 1
+        except Exception,inst:
+            r = str(inst)
+            success = 0
+        self.respond("%s %s\n" % (success, r))
 
     def do_heads(self):
         h = self.repo.heads()