equal
deleted
inserted
replaced
46 impl = getattr(self, 'do_' + cmd, None) |
46 impl = getattr(self, 'do_' + cmd, None) |
47 if impl: impl() |
47 if impl: impl() |
48 else: self.respond("") |
48 else: self.respond("") |
49 return cmd != '' |
49 return cmd != '' |
50 |
50 |
|
51 def do_lookup(self): |
|
52 arg, key = self.getarg() |
|
53 assert arg == 'key' |
|
54 self.respond(hex(self.repo.lookup(key)) + "\n") |
|
55 |
51 def do_heads(self): |
56 def do_heads(self): |
52 h = self.repo.heads() |
57 h = self.repo.heads() |
53 self.respond(" ".join(map(hex, h)) + "\n") |
58 self.respond(" ".join(map(hex, h)) + "\n") |
54 |
59 |
55 def do_hello(self): |
60 def do_hello(self): |
59 consists of a line in the form: |
64 consists of a line in the form: |
60 |
65 |
61 capabilities: space separated list of tokens |
66 capabilities: space separated list of tokens |
62 ''' |
67 ''' |
63 |
68 |
64 caps = ['unbundle'] |
69 caps = ['unbundle', 'lookup', 'changegroupsubset'] |
65 if self.ui.configbool('server', 'uncompressed'): |
70 if self.ui.configbool('server', 'uncompressed'): |
66 caps.append('stream=%d' % self.repo.revlogversion) |
71 caps.append('stream=%d' % self.repo.revlogversion) |
67 self.respond("capabilities: %s\n" % (' '.join(caps),)) |
72 self.respond("capabilities: %s\n" % (' '.join(caps),)) |
68 |
73 |
69 def do_lock(self): |
74 def do_lock(self): |
100 nodes = [] |
105 nodes = [] |
101 arg, roots = self.getarg() |
106 arg, roots = self.getarg() |
102 nodes = map(bin, roots.split(" ")) |
107 nodes = map(bin, roots.split(" ")) |
103 |
108 |
104 cg = self.repo.changegroup(nodes, 'serve') |
109 cg = self.repo.changegroup(nodes, 'serve') |
|
110 while True: |
|
111 d = cg.read(4096) |
|
112 if not d: |
|
113 break |
|
114 self.fout.write(d) |
|
115 |
|
116 self.fout.flush() |
|
117 |
|
118 def do_changegroupsubset(self): |
|
119 bases = [] |
|
120 heads = [] |
|
121 argmap = dict([self.getarg(), self.getarg()]) |
|
122 bases = [bin(n) for n in argmap['bases'].split(' ')] |
|
123 heads = [bin(n) for n in argmap['heads'].split(' ')] |
|
124 |
|
125 cg = self.repo.changegroupsubset(bases, heads, 'serve') |
105 while True: |
126 while True: |
106 d = cg.read(4096) |
127 d = cg.read(4096) |
107 if not d: |
128 if not d: |
108 break |
129 break |
109 self.fout.write(d) |
130 self.fout.write(d) |