Mercurial > public > mercurial-scm > hg
comparison mercurial/httppeer.py @ 50441:315f537627c1
hidden: add support for --remote-hidden to HTTP peer
Test written by Pierre-Yves David.
author | Manuel Jacob <me@manueljacob.de> |
---|---|
date | Fri, 05 Apr 2019 01:17:15 +0200 |
parents | 3a2df812e1c7 |
children | 35b274cba81d |
comparison
equal
deleted
inserted
replaced
50440:3b199593fedd | 50441:315f537627c1 |
---|---|
106 f.seek(0) | 106 f.seek(0) |
107 self._index = 0 | 107 self._index = 0 |
108 | 108 |
109 | 109 |
110 def makev1commandrequest( | 110 def makev1commandrequest( |
111 ui, requestbuilder, caps, capablefn, repobaseurl, cmd, args | 111 ui, |
112 requestbuilder, | |
113 caps, | |
114 capablefn, | |
115 repobaseurl, | |
116 cmd, | |
117 args, | |
118 remotehidden=False, | |
112 ): | 119 ): |
113 """Make an HTTP request to run a command for a version 1 client. | 120 """Make an HTTP request to run a command for a version 1 client. |
114 | 121 |
115 ``caps`` is a set of known server capabilities. The value may be | 122 ``caps`` is a set of known server capabilities. The value may be |
116 None if capabilities are not yet known. | 123 None if capabilities are not yet known. |
125 data = args.pop(b'data', None) | 132 data = args.pop(b'data', None) |
126 headers = args.pop(b'headers', {}) | 133 headers = args.pop(b'headers', {}) |
127 | 134 |
128 ui.debug(b"sending %s command\n" % cmd) | 135 ui.debug(b"sending %s command\n" % cmd) |
129 q = [(b'cmd', cmd)] | 136 q = [(b'cmd', cmd)] |
137 if remotehidden: | |
138 q.append(('access-hidden', '1')) | |
130 headersize = 0 | 139 headersize = 0 |
131 # Important: don't use self.capable() here or else you end up | 140 # Important: don't use self.capable() here or else you end up |
132 # with infinite recursion when trying to look up capabilities | 141 # with infinite recursion when trying to look up capabilities |
133 # for the first time. | 142 # for the first time. |
134 postargsok = caps is not None and b'httppostargs' in caps | 143 postargsok = caps is not None and b'httppostargs' in caps |
383 class httppeer(wireprotov1peer.wirepeer): | 392 class httppeer(wireprotov1peer.wirepeer): |
384 def __init__( | 393 def __init__( |
385 self, ui, path, url, opener, requestbuilder, caps, remotehidden=False | 394 self, ui, path, url, opener, requestbuilder, caps, remotehidden=False |
386 ): | 395 ): |
387 super().__init__(ui, path=path, remotehidden=remotehidden) | 396 super().__init__(ui, path=path, remotehidden=remotehidden) |
388 if remotehidden: | |
389 msg = _( | |
390 b"ignoring `--remote-hidden` request\n" | |
391 b"(access to hidden changeset for http peers not " | |
392 b"supported yet)\n" | |
393 ) | |
394 ui.warn(msg) | |
395 self._url = url | 397 self._url = url |
396 self._caps = caps | 398 self._caps = caps |
397 self.limitedarguments = caps is not None and b'httppostargs' not in caps | 399 self.limitedarguments = caps is not None and b'httppostargs' not in caps |
398 self._urlopener = opener | 400 self._urlopener = opener |
399 self._requestbuilder = requestbuilder | 401 self._requestbuilder = requestbuilder |
402 self._remotehidden = remotehidden | |
400 | 403 |
401 def __del__(self): | 404 def __del__(self): |
402 for h in self._urlopener.handlers: | 405 for h in self._urlopener.handlers: |
403 h.close() | 406 h.close() |
404 getattr(h, "close_all", lambda: None)() | 407 getattr(h, "close_all", lambda: None)() |
449 self._caps, | 452 self._caps, |
450 self.capable, | 453 self.capable, |
451 self._url, | 454 self._url, |
452 cmd, | 455 cmd, |
453 args, | 456 args, |
457 self._remotehidden, | |
454 ) | 458 ) |
455 | 459 |
456 resp = sendrequest(self.ui, self._urlopener, req) | 460 resp = sendrequest(self.ui, self._urlopener, req) |
457 | 461 |
458 self._url, ct, resp = parsev1commandresponse( | 462 self._url, ct, resp = parsev1commandresponse( |