mercurial/wireproto.py
changeset 11594 67863f9d805f
parent 11593 d054cc5c7737
child 11597 9141d2c9e5a5
equal deleted inserted replaced
11593:d054cc5c7737 11594:67863f9d805f
   157     r = []
   157     r = []
   158     for b in repo.branches(nodes):
   158     for b in repo.branches(nodes):
   159         r.append(" ".join(map(hex, b)) + "\n")
   159         r.append(" ".join(map(hex, b)) + "\n")
   160     return "".join(r)
   160     return "".join(r)
   161 
   161 
       
   162 def capabilities(repo, proto):
       
   163     caps = 'lookup changegroupsubset branchmap pushkey'.split()
       
   164     if streamclone.allowed(repo.ui):
       
   165         caps.append('stream=%d' % repo.changelog.version)
       
   166     caps.append('unbundle=%s' % ','.join(changegroupmod.bundlepriority))
       
   167     return ' '.join(caps)
       
   168 
   162 def changegroup(repo, proto, roots):
   169 def changegroup(repo, proto, roots):
   163     nodes = map(bin, roots.split(" "))
   170     nodes = map(bin, roots.split(" "))
   164     cg = repo.changegroup(nodes, 'serve')
   171     cg = repo.changegroup(nodes, 'serve')
   165     proto.sendchangegroup(cg)
   172     proto.sendchangegroup(cg)
   166 
   173 
   171     proto.sendchangegroup(cg)
   178     proto.sendchangegroup(cg)
   172 
   179 
   173 def heads(repo, proto):
   180 def heads(repo, proto):
   174     h = repo.heads()
   181     h = repo.heads()
   175     return " ".join(map(hex, h)) + "\n"
   182     return " ".join(map(hex, h)) + "\n"
       
   183 
       
   184 def hello(repo, proto):
       
   185     '''the hello command returns a set of lines describing various
       
   186     interesting things about the server, in an RFC822-like format.
       
   187     Currently the only one defined is "capabilities", which
       
   188     consists of a line in the form:
       
   189 
       
   190     capabilities: space separated list of tokens
       
   191     '''
       
   192     return "capabilities: %s\n" % (capabilities(repo, proto))
   176 
   193 
   177 def listkeys(repo, proto, namespace):
   194 def listkeys(repo, proto, namespace):
   178     d = pushkey_.list(repo, namespace).items()
   195     d = pushkey_.list(repo, namespace).items()
   179     t = '\n'.join(['%s\t%s' % (k.encode('string-escape'),
   196     t = '\n'.join(['%s\t%s' % (k.encode('string-escape'),
   180                                v.encode('string-escape')) for k, v in d])
   197                                v.encode('string-escape')) for k, v in d])
   251 
   268 
   252 commands = {
   269 commands = {
   253     'between': (between, 'pairs'),
   270     'between': (between, 'pairs'),
   254     'branchmap': (branchmap, ''),
   271     'branchmap': (branchmap, ''),
   255     'branches': (branches, 'nodes'),
   272     'branches': (branches, 'nodes'),
       
   273     'capabilities': (capabilities, ''),
   256     'changegroup': (changegroup, 'roots'),
   274     'changegroup': (changegroup, 'roots'),
   257     'changegroupsubset': (changegroupsubset, 'bases heads'),
   275     'changegroupsubset': (changegroupsubset, 'bases heads'),
   258     'heads': (heads, ''),
   276     'heads': (heads, ''),
       
   277     'hello': (hello, ''),
   259     'listkeys': (listkeys, 'namespace'),
   278     'listkeys': (listkeys, 'namespace'),
   260     'lookup': (lookup, 'key'),
   279     'lookup': (lookup, 'key'),
   261     'pushkey': (pushkey, 'namespace key old new'),
   280     'pushkey': (pushkey, 'namespace key old new'),
   262     'stream_out': (stream, ''),
   281     'stream_out': (stream, ''),
   263     'unbundle': (unbundle, 'heads'),
   282     'unbundle': (unbundle, 'heads'),