Mercurial > hg
annotate mercurial/helptext/internals/wireprotocol.txt @ 46209:a51d345f1404
upgrade: move optimization addition to determineactions()
The documentation of `determineactions()` mention that it is given a list
returned from `findoptimizations()` however it was not true before this patch.
The code extending actions with optimizations also mentioned about it that this
should be in determineactions.
So let's do what comments at couple of places say.
Differential Revision: https://phab.mercurial-scm.org/D9615
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Wed, 16 Dec 2020 14:06:24 +0530 |
parents | 2e017696181f |
children | 04688c51f81f |
rev | line source |
---|---|
29859
a1092e2d70a3
help: internals topic for wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
1 The Mercurial wire protocol is a request-response based protocol |
a1092e2d70a3
help: internals topic for wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
2 with multiple wire representations. |
a1092e2d70a3
help: internals topic for wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
3 |
a1092e2d70a3
help: internals topic for wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
4 Each request is modeled as a command name, a dictionary of arguments, and |
a1092e2d70a3
help: internals topic for wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
5 optional raw input. Command arguments and their types are intrinsic |
a1092e2d70a3
help: internals topic for wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
6 properties of commands. So is the response type of the command. This means |
a1092e2d70a3
help: internals topic for wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
7 clients can't always send arbitrary arguments to servers and servers can't |
a1092e2d70a3
help: internals topic for wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
8 return multiple response types. |
a1092e2d70a3
help: internals topic for wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
9 |
a1092e2d70a3
help: internals topic for wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
10 The protocol is synchronous and does not support multiplexing (concurrent |
a1092e2d70a3
help: internals topic for wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
11 commands). |
29860
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
12 |
35975
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
13 Handshake |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
14 ========= |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
15 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
16 It is required or common for clients to perform a *handshake* when connecting |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
17 to a server. The handshake serves the following purposes: |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
18 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
19 * Negotiating protocol/transport level options |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
20 * Allows the client to learn about server capabilities to influence |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
21 future requests |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
22 * Ensures the underlying transport channel is in a *clean* state |
29860
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
23 |
35975
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
24 An important goal of the handshake is to allow clients to use more modern |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
25 wire protocol features. By default, clients must assume they are talking |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
26 to an old version of Mercurial server (possibly even the very first |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
27 implementation). So, clients should not attempt to call or utilize modern |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
28 wire protocol features until they have confirmation that the server |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
29 supports them. The handshake implementation is designed to allow both |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
30 ends to utilize the latest set of features and capabilities with as |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
31 few round trips as possible. |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
32 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
33 The handshake mechanism varies by transport and protocol and is documented |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
34 in the sections below. |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
35 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
36 HTTP Protocol |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
37 ============= |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
38 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
39 Handshake |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
40 --------- |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
41 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
42 The client sends a ``capabilities`` command request (``?cmd=capabilities``) |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
43 as soon as HTTP requests may be issued. |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
44 |
37557
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
45 By default, the server responds with a version 1 capabilities string, which |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
46 the client parses to learn about the server's abilities. The ``Content-Type`` |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
47 for this response is ``application/mercurial-0.1`` or |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
48 ``application/mercurial-0.2`` depending on whether the client advertised |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
49 support for version ``0.2`` in its request. (Clients aren't supposed to |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
50 advertise support for ``0.2`` until the capabilities response indicates |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
51 the server's support for that media type. However, a client could |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
52 conceivably cache this metadata and issue the capabilities request in such |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
53 a way to elicit an ``application/mercurial-0.2`` response.) |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
54 |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
55 Clients wishing to switch to a newer API service may send an |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
56 ``X-HgUpgrade-<X>`` header containing a space-delimited list of API service |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
57 names the client is capable of speaking. The request MUST also include an |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
58 ``X-HgProto-<X>`` header advertising a known serialization format for the |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
59 response. ``cbor`` is currently the only defined serialization format. |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
60 |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
61 If the request contains these headers, the response ``Content-Type`` MAY |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
62 be for a different media type. e.g. ``application/mercurial-cbor`` if the |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
63 client advertises support for CBOR. |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
64 |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
65 The response MUST be deserializable to a map with the following keys: |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
66 |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
67 apibase |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
68 URL path to API services, relative to the repository root. e.g. ``api/``. |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
69 |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
70 apis |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
71 A map of API service names to API descriptors. An API descriptor contains |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
72 more details about that API. In the case of the HTTP Version 2 Transport, |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
73 it will be the normal response to a ``capabilities`` command. |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
74 |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
75 Only the services advertised by the client that are also available on |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
76 the server are advertised. |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
77 |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
78 v1capabilities |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
79 The capabilities string that would be returned by a version 1 response. |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
80 |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
81 The client can then inspect the server-advertised APIs and decide which |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
82 API to use, including continuing to use the HTTP Version 1 Transport. |
35975
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
83 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
84 HTTP Version 1 Transport |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
85 ------------------------ |
29860
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
86 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
87 Commands are issued as HTTP/1.0 or HTTP/1.1 requests. Commands are |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
88 sent to the base URL of the repository with the command name sent in |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
89 the ``cmd`` query string parameter. e.g. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
90 ``https://example.com/repo?cmd=capabilities``. The HTTP method is ``GET`` |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
91 or ``POST`` depending on the command and whether there is a request |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
92 body. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
93 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
94 Command arguments can be sent multiple ways. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
95 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
96 The simplest is part of the URL query string using ``x-www-form-urlencoded`` |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
97 encoding (see Python's ``urllib.urlencode()``. However, many servers impose |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
98 length limitations on the URL. So this mechanism is typically only used if |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
99 the server doesn't support other mechanisms. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
100 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
101 If the server supports the ``httpheader`` capability, command arguments can |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
102 be sent in HTTP request headers named ``X-HgArg-<N>`` where ``<N>`` is an |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
103 integer starting at 1. A ``x-www-form-urlencoded`` representation of the |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
104 arguments is obtained. This full string is then split into chunks and sent |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
105 in numbered ``X-HgArg-<N>`` headers. The maximum length of each HTTP header |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
106 is defined by the server in the ``httpheader`` capability value, which defaults |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
107 to ``1024``. The server reassembles the encoded arguments string by |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
108 concatenating the ``X-HgArg-<N>`` headers then URL decodes them into a |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
109 dictionary. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
110 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
111 The list of ``X-HgArg-<N>`` headers should be added to the ``Vary`` request |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
112 header to instruct caches to take these headers into consideration when caching |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
113 requests. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
114 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
115 If the server supports the ``httppostargs`` capability, the client |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
116 may send command arguments in the HTTP request body as part of an |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
117 HTTP POST request. The command arguments will be URL encoded just like |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
118 they would for sending them via HTTP headers. However, no splitting is |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
119 performed: the raw arguments are included in the HTTP request body. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
120 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
121 The client sends a ``X-HgArgs-Post`` header with the string length of the |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
122 encoded arguments data. Additional data may be included in the HTTP |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
123 request body immediately following the argument data. The offset of the |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
124 non-argument data is defined by the ``X-HgArgs-Post`` header. The |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
125 ``X-HgArgs-Post`` header is not required if there is no argument data. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
126 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
127 Additional command data can be sent as part of the HTTP request body. The |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
128 default ``Content-Type`` when sending data is ``application/mercurial-0.1``. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
129 A ``Content-Length`` header is currently always sent. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
130 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
131 Example HTTP requests:: |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
132 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
133 GET /repo?cmd=capabilities |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
134 X-HgArg-1: foo=bar&baz=hello%20world |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
135 |
30760
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
136 The request media type should be chosen based on server support. If the |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
137 ``httpmediatype`` server capability is present, the client should send |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
138 the newest mutually supported media type. If this capability is absent, |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
139 the client must assume the server only supports the |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
140 ``application/mercurial-0.1`` media type. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
141 |
29860
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
142 The ``Content-Type`` HTTP response header identifies the response as coming |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
143 from Mercurial and can also be used to signal an error has occurred. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
144 |
30760
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
145 The ``application/mercurial-*`` media types indicate a generic Mercurial |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
146 data type. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
147 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
148 The ``application/mercurial-0.1`` media type is raw Mercurial data. It is the |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
149 predecessor of the format below. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
150 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
151 The ``application/mercurial-0.2`` media type is compression framed Mercurial |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
152 data. The first byte of the payload indicates the length of the compression |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
153 format identifier that follows. Next are N bytes indicating the compression |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
154 format. e.g. ``zlib``. The remaining bytes are compressed according to that |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
155 compression format. The decompressed data behaves the same as with |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
156 ``application/mercurial-0.1``. |
29860
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
157 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
158 The ``application/hg-error`` media type indicates a generic error occurred. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
159 The content of the HTTP response body typically holds text describing the |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
160 error. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
161 |
37557
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
162 The ``application/mercurial-cbor`` media type indicates a CBOR payload |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
163 and should be interpreted as identical to ``application/cbor``. |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
164 |
30760
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
165 Behavior of media types is further described in the ``Content Negotiation`` |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
166 section below. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
167 |
29860
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
168 Clients should issue a ``User-Agent`` request header that identifies the client. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
169 The server should not use the ``User-Agent`` for feature detection. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
170 |
30760
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
171 A command returning a ``string`` response issues a |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
172 ``application/mercurial-0.*`` media type and the HTTP response body contains |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
173 the raw string value (after compression decoding, if used). A |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
174 ``Content-Length`` header is typically issued, but not required. |
29860
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
175 |
30760
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
176 A command returning a ``stream`` response issues a |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
177 ``application/mercurial-0.*`` media type and the HTTP response is typically |
29860
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
178 using *chunked transfer* (``Transfer-Encoding: chunked``). |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
179 |
37047
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
180 HTTP Version 2 Transport |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
181 ------------------------ |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
182 |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
183 **Experimental - feature under active development** |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
184 |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
185 Version 2 of the HTTP protocol is exposed under the ``/api/*`` URL space. |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
186 It's final API name is not yet formalized. |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
187 |
37048
fc5e261915b9
wireproto: require POST for all HTTPv2 requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37047
diff
changeset
|
188 Commands are triggered by sending HTTP POST requests against URLs of the |
37047
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
189 form ``<permission>/<command>``, where ``<permission>`` is ``ro`` or |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
190 ``rw``, meaning read-only and read-write, respectively and ``<command>`` |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
191 is a named wire protocol command. |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
192 |
37048
fc5e261915b9
wireproto: require POST for all HTTPv2 requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37047
diff
changeset
|
193 Non-POST request methods MUST be rejected by the server with an HTTP |
fc5e261915b9
wireproto: require POST for all HTTPv2 requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37047
diff
changeset
|
194 405 response. |
fc5e261915b9
wireproto: require POST for all HTTPv2 requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37047
diff
changeset
|
195 |
37047
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
196 Commands that modify repository state in meaningful ways MUST NOT be |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
197 exposed under the ``ro`` URL prefix. All available commands MUST be |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
198 available under the ``rw`` URL prefix. |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
199 |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
200 Server adminstrators MAY implement blanket HTTP authentication keyed |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
201 off the URL prefix. For example, a server may require authentication |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
202 for all ``rw/*`` URLs and let unauthenticated requests to ``ro/*`` |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
203 URL proceed. A server MAY issue an HTTP 401, 403, or 407 response |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
204 in accordance with RFC 7235. Clients SHOULD recognize the HTTP Basic |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
205 (RFC 7617) and Digest (RFC 7616) authentication schemes. Clients SHOULD |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
206 make an attempt to recognize unknown schemes using the |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
207 ``WWW-Authenticate`` response header on a 401 response, as defined by |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
208 RFC 7235. |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
209 |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
210 Read-only commands are accessible under ``rw/*`` URLs so clients can |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
211 signal the intent of the operation very early in the connection |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
212 lifecycle. For example, a ``push`` operation - which consists of |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
213 various read-only commands mixed with at least one read-write command - |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
214 can perform all commands against ``rw/*`` URLs so that any server-side |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
215 authentication requirements are discovered upon attempting the first |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
216 command - not potentially several commands into the exchange. This |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
217 allows clients to fail faster or prompt for credentials as soon as the |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
218 exchange takes place. This provides a better end-user experience. |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
219 |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
220 Requests to unknown commands or URLS result in an HTTP 404. |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
221 TODO formally define response type, how error is communicated, etc. |
fddcb51b5084
wireproto: define permissions-based routing of HTTPv2 wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35976
diff
changeset
|
222 |
39558
b0e0db1565d1
internals: extract frame-based protocol docs to own document
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39439
diff
changeset
|
223 HTTP request and response bodies use the ``hgrpc`` protocol for media |
b0e0db1565d1
internals: extract frame-based protocol docs to own document
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39439
diff
changeset
|
224 exchange.` (See :hg:`help internals.wireprotocolrpc` for details of |
b0e0db1565d1
internals: extract frame-based protocol docs to own document
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39439
diff
changeset
|
225 the protocol.) The entirety of the HTTP message body is 0 or more frames |
b0e0db1565d1
internals: extract frame-based protocol docs to own document
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39439
diff
changeset
|
226 as defined by this protocol. |
37050
37d7a1d18b97
wireproto: define content negotiation for HTTPv2
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37048
diff
changeset
|
227 |
37d7a1d18b97
wireproto: define content negotiation for HTTPv2
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37048
diff
changeset
|
228 Clients and servers MUST advertise the ``TBD`` media type via the |
37d7a1d18b97
wireproto: define content negotiation for HTTPv2
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37048
diff
changeset
|
229 ``Content-Type`` request and response headers. In addition, clients MUST |
37d7a1d18b97
wireproto: define content negotiation for HTTPv2
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37048
diff
changeset
|
230 advertise this media type value in their ``Accept`` request header in all |
37d7a1d18b97
wireproto: define content negotiation for HTTPv2
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37048
diff
changeset
|
231 requests. |
37051
40206e227412
wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37050
diff
changeset
|
232 TODO finalize the media type. For now, it is defined in wireprotoserver.py. |
37050
37d7a1d18b97
wireproto: define content negotiation for HTTPv2
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37048
diff
changeset
|
233 |
37d7a1d18b97
wireproto: define content negotiation for HTTPv2
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37048
diff
changeset
|
234 Servers receiving requests without an ``Accept`` header SHOULD respond with |
37d7a1d18b97
wireproto: define content negotiation for HTTPv2
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37048
diff
changeset
|
235 an HTTP 406. |
37d7a1d18b97
wireproto: define content negotiation for HTTPv2
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37048
diff
changeset
|
236 |
37d7a1d18b97
wireproto: define content negotiation for HTTPv2
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37048
diff
changeset
|
237 Servers receiving requests with an invalid ``Content-Type`` header SHOULD |
37d7a1d18b97
wireproto: define content negotiation for HTTPv2
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37048
diff
changeset
|
238 respond with an HTTP 415. |
37d7a1d18b97
wireproto: define content negotiation for HTTPv2
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37048
diff
changeset
|
239 |
39558
b0e0db1565d1
internals: extract frame-based protocol docs to own document
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39439
diff
changeset
|
240 The command to run is specified in the POST payload as defined by ``hgrpc``. |
b0e0db1565d1
internals: extract frame-based protocol docs to own document
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39439
diff
changeset
|
241 This is redundant with data already encoded in the URL. This is by design, |
b0e0db1565d1
internals: extract frame-based protocol docs to own document
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39439
diff
changeset
|
242 so server operators can have better understanding about server activity from |
b0e0db1565d1
internals: extract frame-based protocol docs to own document
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39439
diff
changeset
|
243 looking merely at HTTP access logs. |
37059
bbea991635d0
wireproto: service multiple command requests per HTTP request
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37057
diff
changeset
|
244 |
bbea991635d0
wireproto: service multiple command requests per HTTP request
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37057
diff
changeset
|
245 In most circumstances, the command specified in the URL MUST match |
bbea991635d0
wireproto: service multiple command requests per HTTP request
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37057
diff
changeset
|
246 the command specified in the frame-based payload or the server will |
bbea991635d0
wireproto: service multiple command requests per HTTP request
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37057
diff
changeset
|
247 respond with an error. The exception to this is the special |
bbea991635d0
wireproto: service multiple command requests per HTTP request
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37057
diff
changeset
|
248 ``multirequest`` URL. (See below.) In addition, HTTP requests |
bbea991635d0
wireproto: service multiple command requests per HTTP request
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37057
diff
changeset
|
249 are limited to one command invocation. The exception is the special |
bbea991635d0
wireproto: service multiple command requests per HTTP request
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37057
diff
changeset
|
250 ``multirequest`` URL. |
bbea991635d0
wireproto: service multiple command requests per HTTP request
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37057
diff
changeset
|
251 |
bbea991635d0
wireproto: service multiple command requests per HTTP request
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37057
diff
changeset
|
252 The ``multirequest`` command endpoints (``ro/multirequest`` and |
bbea991635d0
wireproto: service multiple command requests per HTTP request
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37057
diff
changeset
|
253 ``rw/multirequest``) are special in that they allow the execution of |
bbea991635d0
wireproto: service multiple command requests per HTTP request
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37057
diff
changeset
|
254 *any* command and allow the execution of multiple commands. If the |
bbea991635d0
wireproto: service multiple command requests per HTTP request
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37057
diff
changeset
|
255 HTTP request issues multiple commands across multiple frames, all |
bbea991635d0
wireproto: service multiple command requests per HTTP request
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37057
diff
changeset
|
256 issued commands will be processed by the server. Per the defined |
39558
b0e0db1565d1
internals: extract frame-based protocol docs to own document
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39439
diff
changeset
|
257 behavior of ``hgrpc```, commands may be issued interleaved and responses |
b0e0db1565d1
internals: extract frame-based protocol docs to own document
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39439
diff
changeset
|
258 may come back in a different order than they were issued. Clients MUST |
b0e0db1565d1
internals: extract frame-based protocol docs to own document
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39439
diff
changeset
|
259 be able to deal with this. |
37059
bbea991635d0
wireproto: service multiple command requests per HTTP request
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37057
diff
changeset
|
260 |
35975
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
261 SSH Protocol |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
262 ============ |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
263 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
264 Handshake |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
265 --------- |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
266 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
267 For all clients, the handshake consists of the client sending 1 or more |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
268 commands to the server using version 1 of the transport. Servers respond |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
269 to commands they know how to respond to and send an empty response (``0\n``) |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
270 for unknown commands (per standard behavior of version 1 of the transport). |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
271 Clients then typically look for a response to the newest sent command to |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
272 determine which transport version to use and what the available features for |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
273 the connection and server are. |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
274 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
275 Preceding any response from client-issued commands, the server may print |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
276 non-protocol output. It is common for SSH servers to print banners, message |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
277 of the day announcements, etc when clients connect. It is assumed that any |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
278 such *banner* output will precede any Mercurial server output. So clients |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
279 must be prepared to handle server output on initial connect that isn't |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
280 in response to any client-issued command and doesn't conform to Mercurial's |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
281 wire protocol. This *banner* output should only be on stdout. However, |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
282 some servers may send output on stderr. |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
283 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
284 Pre 0.9.1 clients issue a ``between`` command with the ``pairs`` argument |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
285 having the value |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
286 ``0000000000000000000000000000000000000000-0000000000000000000000000000000000000000``. |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
287 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
288 The ``between`` command has been supported since the original Mercurial |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
289 SSH server. Requesting the empty range will return a ``\n`` string response, |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
290 which will be encoded as ``1\n\n`` (value length of ``1`` followed by a newline |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
291 followed by the value, which happens to be a newline). |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
292 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
293 For pre 0.9.1 clients and all servers, the exchange looks like:: |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
294 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
295 c: between\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
296 c: pairs 81\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
297 c: 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
298 s: 1\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
299 s: \n |
29860
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
300 |
35975
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
301 0.9.1+ clients send a ``hello`` command (with no arguments) before the |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
302 ``between`` command. The response to this command allows clients to |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
303 discover server capabilities and settings. |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
304 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
305 An example exchange between 0.9.1+ clients and a ``hello`` aware server looks |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
306 like:: |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
307 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
308 c: hello\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
309 c: between\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
310 c: pairs 81\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
311 c: 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
312 s: 324\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
313 s: capabilities: lookup changegroupsubset branchmap pushkey known getbundle ...\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
314 s: 1\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
315 s: \n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
316 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
317 And a similar scenario but with servers sending a banner on connect:: |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
318 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
319 c: hello\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
320 c: between\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
321 c: pairs 81\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
322 c: 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
323 s: welcome to the server\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
324 s: if you find any issues, email someone@somewhere.com\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
325 s: 324\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
326 s: capabilities: lookup changegroupsubset branchmap pushkey known getbundle ...\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
327 s: 1\n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
328 s: \n |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
329 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
330 Note that output from the ``hello`` command is terminated by a ``\n``. This is |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
331 part of the response payload and not part of the wire protocol adding a newline |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
332 after responses. In other words, the length of the response contains the |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
333 trailing ``\n``. |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
334 |
35976
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
335 Clients supporting version 2 of the SSH transport send a line beginning |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
336 with ``upgrade`` before the ``hello`` and ``between`` commands. The line |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
337 (which isn't a well-formed command line because it doesn't consist of a |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
338 single command name) serves to both communicate the client's intent to |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
339 switch to transport version 2 (transports are version 1 by default) as |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
340 well as to advertise the client's transport-level capabilities so the |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
341 server may satisfy that request immediately. |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
342 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
343 The upgrade line has the form: |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
344 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
345 upgrade <token> <transport capabilities> |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
346 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
347 That is the literal string ``upgrade`` followed by a space, followed by |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
348 a randomly generated string, followed by a space, followed by a string |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
349 denoting the client's transport capabilities. |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
350 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
351 The token can be anything. However, a random UUID is recommended. (Use |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
352 of version 4 UUIDs is recommended because version 1 UUIDs can leak the |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
353 client's MAC address.) |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
354 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
355 The transport capabilities string is a URL/percent encoded string |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
356 containing key-value pairs defining the client's transport-level |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
357 capabilities. The following capabilities are defined: |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
358 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
359 proto |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
360 A comma-delimited list of transport protocol versions the client |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
361 supports. e.g. ``ssh-v2``. |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
362 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
363 If the server does not recognize the ``upgrade`` line, it should issue |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
364 an empty response and continue processing the ``hello`` and ``between`` |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
365 commands. Here is an example handshake between a version 2 aware client |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
366 and a non version 2 aware server: |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
367 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
368 c: upgrade 2e82ab3f-9ce3-4b4e-8f8c-6fd1c0e9e23a proto=ssh-v2 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
369 c: hello\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
370 c: between\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
371 c: pairs 81\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
372 c: 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
373 s: 0\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
374 s: 324\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
375 s: capabilities: lookup changegroupsubset branchmap pushkey known getbundle ...\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
376 s: 1\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
377 s: \n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
378 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
379 (The initial ``0\n`` line from the server indicates an empty response to |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
380 the unknown ``upgrade ..`` command/line.) |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
381 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
382 If the server recognizes the ``upgrade`` line and is willing to satisfy that |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
383 upgrade request, it replies to with a payload of the following form: |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
384 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
385 upgraded <token> <transport name>\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
386 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
387 This line is the literal string ``upgraded``, a space, the token that was |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
388 specified by the client in its ``upgrade ...`` request line, a space, and the |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
389 name of the transport protocol that was chosen by the server. The transport |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
390 name MUST match one of the names the client specified in the ``proto`` field |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
391 of its ``upgrade ...`` request line. |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
392 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
393 If a server issues an ``upgraded`` response, it MUST also read and ignore |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
394 the lines associated with the ``hello`` and ``between`` command requests |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
395 that were issued by the server. It is assumed that the negotiated transport |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
396 will respond with equivalent requested information following the transport |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
397 handshake. |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
398 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
399 All data following the ``\n`` terminating the ``upgraded`` line is the |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
400 domain of the negotiated transport. It is common for the data immediately |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
401 following to contain additional metadata about the state of the transport and |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
402 the server. However, this isn't strictly speaking part of the transport |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
403 handshake and isn't covered by this section. |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
404 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
405 Here is an example handshake between a version 2 aware client and a version |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
406 2 aware server: |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
407 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
408 c: upgrade 2e82ab3f-9ce3-4b4e-8f8c-6fd1c0e9e23a proto=ssh-v2 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
409 c: hello\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
410 c: between\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
411 c: pairs 81\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
412 c: 0000000000000000000000000000000000000000-0000000000000000000000000000000000000000 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
413 s: upgraded 2e82ab3f-9ce3-4b4e-8f8c-6fd1c0e9e23a ssh-v2\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
414 s: <additional transport specific data> |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
415 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
416 The client-issued token that is echoed in the response provides a more |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
417 resilient mechanism for differentiating *banner* output from Mercurial |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
418 output. In version 1, properly formatted banner output could get confused |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
419 for Mercurial server output. By submitting a randomly generated token |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
420 that is then present in the response, the client can look for that token |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
421 in response lines and have reasonable certainty that the line did not |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
422 originate from a *banner* message. |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
423 |
35975
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
424 SSH Version 1 Transport |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
425 ----------------------- |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
426 |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
427 The SSH transport (version 1) is a custom text-based protocol suitable for |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
428 use over any bi-directional stream transport. It is most commonly used with |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
429 SSH. |
29860
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
430 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
431 A SSH transport server can be started with ``hg serve --stdio``. The stdin, |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
432 stderr, and stdout file descriptors of the started process are used to exchange |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
433 data. When Mercurial connects to a remote server over SSH, it actually starts |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
434 a ``hg serve --stdio`` process on the remote server. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
435 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
436 Commands are issued by sending the command name followed by a trailing newline |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
437 ``\n`` to the server. e.g. ``capabilities\n``. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
438 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
439 Command arguments are sent in the following format:: |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
440 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
441 <argument> <length>\n<value> |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
442 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
443 That is, the argument string name followed by a space followed by the |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
444 integer length of the value (expressed as a string) followed by a newline |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
445 (``\n``) followed by the raw argument value. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
446 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
447 Dictionary arguments are encoded differently:: |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
448 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
449 <argument> <# elements>\n |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
450 <key1> <length1>\n<value1> |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
451 <key2> <length2>\n<value2> |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
452 ... |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
453 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
454 Non-argument data is sent immediately after the final argument value. It is |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
455 encoded in chunks:: |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
456 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
457 <length>\n<data> |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
458 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
459 Each command declares a list of supported arguments and their types. If a |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
460 client sends an unknown argument to the server, the server should abort |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
461 immediately. The special argument ``*`` in a command's definition indicates |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
462 that all argument names are allowed. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
463 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
464 The definition of supported arguments and types is initially made when a |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
465 new command is implemented. The client and server must initially independently |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
466 agree on the arguments and their types. This initial set of arguments can be |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
467 supplemented through the presence of *capabilities* advertised by the server. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
468 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
469 Each command has a defined expected response type. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
470 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
471 A ``string`` response type is a length framed value. The response consists of |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
472 the string encoded integer length of a value followed by a newline (``\n``) |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
473 followed by the value. Empty values are allowed (and are represented as |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
474 ``0\n``). |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
475 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
476 A ``stream`` response type consists of raw bytes of data. There is no framing. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
477 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
478 A generic error response type is also supported. It consists of a an error |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
479 message written to ``stderr`` followed by ``\n-\n``. In addition, ``\n`` is |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
480 written to ``stdout``. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
481 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
482 If the server receives an unknown command, it will send an empty ``string`` |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
483 response. |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
484 |
b42c26b0a785
help: document wire protocol transport protocols
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29859
diff
changeset
|
485 The server terminates if it receives an empty command (a ``\n`` character). |
29863
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
486 |
37393
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
487 If the server announces support for the ``protocaps`` capability, the client |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
488 should issue a ``protocaps`` command after the initial handshake to annonunce |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
489 its own capabilities. The client capabilities are persistent. |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
490 |
35976
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
491 SSH Version 2 Transport |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
492 ----------------------- |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
493 |
37051
40206e227412
wireproto: define and implement protocol for issuing requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37050
diff
changeset
|
494 **Experimental and under development** |
35976
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
495 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
496 Version 2 of the SSH transport behaves identically to version 1 of the SSH |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
497 transport with the exception of handshake semantics. See above for how |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
498 version 2 of the SSH transport is negotiated. |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
499 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
500 Immediately following the ``upgraded`` line signaling a switch to version |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
501 2 of the SSH protocol, the server automatically sends additional details |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
502 about the capabilities of the remote server. This has the form: |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
503 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
504 <integer length of value>\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
505 capabilities: ...\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
506 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
507 e.g. |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
508 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
509 s: upgraded 2e82ab3f-9ce3-4b4e-8f8c-6fd1c0e9e23a ssh-v2\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
510 s: 240\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
511 s: capabilities: known getbundle batch ...\n |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
512 |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
513 Following capabilities advertisement, the peers communicate using version |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
514 1 of the SSH transport. |
48a3a9283f09
sshpeer: initial definition and implementation of new SSH protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35975
diff
changeset
|
515 |
29863
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
516 Capabilities |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
517 ============ |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
518 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
519 Servers advertise supported wire protocol features. This allows clients to |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
520 probe for server features before blindly calling a command or passing a |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
521 specific argument. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
522 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
523 The server's features are exposed via a *capabilities* string. This is a |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
524 space-delimited string of tokens/features. Some features are single words |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
525 like ``lookup`` or ``batch``. Others are complicated key-value pairs |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
526 advertising sub-features. e.g. ``httpheader=2048``. When complex, non-word |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
527 values are used, each feature name can define its own encoding of sub-values. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
528 Comma-delimited and ``x-www-form-urlencoded`` values are common. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
529 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
530 The following document capabilities defined by the canonical Mercurial server |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
531 implementation. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
532 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
533 batch |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
534 ----- |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
535 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
536 Whether the server supports the ``batch`` command. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
537 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
538 This capability/command was introduced in Mercurial 1.9 (released July 2011). |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
539 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
540 branchmap |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
541 --------- |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
542 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
543 Whether the server supports the ``branchmap`` command. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
544 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
545 This capability/command was introduced in Mercurial 1.3 (released July 2009). |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
546 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
547 bundle2-exp |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
548 ----------- |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
549 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
550 Precursor to ``bundle2`` capability that was used before bundle2 was a |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
551 stable feature. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
552 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
553 This capability was introduced in Mercurial 3.0 behind an experimental |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
554 flag. This capability should not be observed in the wild. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
555 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
556 bundle2 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
557 ------- |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
558 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
559 Indicates whether the server supports the ``bundle2`` data exchange format. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
560 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
561 The value of the capability is a URL quoted, newline (``\n``) delimited |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
562 list of keys or key-value pairs. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
563 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
564 A key is simply a URL encoded string. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
565 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
566 A key-value pair is a URL encoded key separated from a URL encoded value by |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
567 an ``=``. If the value is a list, elements are delimited by a ``,`` after |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
568 URL encoding. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
569 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
570 For example, say we have the values:: |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
571 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
572 {'HG20': [], 'changegroup': ['01', '02'], 'digests': ['sha1', 'sha512']} |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
573 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
574 We would first construct a string:: |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
575 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
576 HG20\nchangegroup=01,02\ndigests=sha1,sha512 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
577 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
578 We would then URL quote this string:: |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
579 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
580 HG20%0Achangegroup%3D01%2C02%0Adigests%3Dsha1%2Csha512 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
581 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
582 This capability was introduced in Mercurial 3.4 (released May 2015). |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
583 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
584 changegroupsubset |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
585 ----------------- |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
586 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
587 Whether the server supports the ``changegroupsubset`` command. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
588 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
589 This capability was introduced in Mercurial 0.9.2 (released December |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
590 2006). |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
591 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
592 This capability was introduced at the same time as the ``lookup`` |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
593 capability/command. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
594 |
30760
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
595 compression |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
596 ----------- |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
597 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
598 Declares support for negotiating compression formats. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
599 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
600 Presence of this capability indicates the server supports dynamic selection |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
601 of compression formats based on the client request. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
602 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
603 Servers advertising this capability are required to support the |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
604 ``application/mercurial-0.2`` media type in response to commands returning |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
605 streams. Servers may support this media type on any command. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
606 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
607 The value of the capability is a comma-delimited list of strings declaring |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
608 supported compression formats. The order of the compression formats is in |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
609 server-preferred order, most preferred first. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
610 |
30761
7283719e2bfd
util: declare wire protocol support of compression engines
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30760
diff
changeset
|
611 The identifiers used by the official Mercurial distribution are: |
7283719e2bfd
util: declare wire protocol support of compression engines
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30760
diff
changeset
|
612 |
7283719e2bfd
util: declare wire protocol support of compression engines
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30760
diff
changeset
|
613 bzip2 |
7283719e2bfd
util: declare wire protocol support of compression engines
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30760
diff
changeset
|
614 bzip2 |
7283719e2bfd
util: declare wire protocol support of compression engines
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30760
diff
changeset
|
615 none |
7283719e2bfd
util: declare wire protocol support of compression engines
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30760
diff
changeset
|
616 uncompressed / raw data |
7283719e2bfd
util: declare wire protocol support of compression engines
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30760
diff
changeset
|
617 zlib |
7283719e2bfd
util: declare wire protocol support of compression engines
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30760
diff
changeset
|
618 zlib (no gzip header) |
7283719e2bfd
util: declare wire protocol support of compression engines
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30760
diff
changeset
|
619 zstd |
7283719e2bfd
util: declare wire protocol support of compression engines
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30760
diff
changeset
|
620 zstd |
7283719e2bfd
util: declare wire protocol support of compression engines
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30760
diff
changeset
|
621 |
30760
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
622 This capability was introduced in Mercurial 4.1 (released February 2017). |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
623 |
29863
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
624 getbundle |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
625 --------- |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
626 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
627 Whether the server supports the ``getbundle`` command. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
628 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
629 This capability was introduced in Mercurial 1.9 (released July 2011). |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
630 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
631 httpheader |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
632 ---------- |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
633 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
634 Whether the server supports receiving command arguments via HTTP request |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
635 headers. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
636 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
637 The value of the capability is an integer describing the max header |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
638 length that clients should send. Clients should ignore any content after a |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
639 comma in the value, as this is reserved for future use. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
640 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
641 This capability was introduced in Mercurial 1.9 (released July 2011). |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
642 |
30760
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
643 httpmediatype |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
644 ------------- |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
645 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
646 Indicates which HTTP media types (``Content-Type`` header) the server is |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
647 capable of receiving and sending. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
648 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
649 The value of the capability is a comma-delimited list of strings identifying |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
650 support for media type and transmission direction. The following strings may |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
651 be present: |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
652 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
653 0.1rx |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
654 Indicates server support for receiving ``application/mercurial-0.1`` media |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
655 types. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
656 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
657 0.1tx |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
658 Indicates server support for sending ``application/mercurial-0.1`` media |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
659 types. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
660 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
661 0.2rx |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
662 Indicates server support for receiving ``application/mercurial-0.2`` media |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
663 types. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
664 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
665 0.2tx |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
666 Indicates server support for sending ``application/mercurial-0.2`` media |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
667 types. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
668 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
669 minrx=X |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
670 Minimum media type version the server is capable of receiving. Value is a |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
671 string like ``0.2``. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
672 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
673 This capability can be used by servers to limit connections from legacy |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
674 clients not using the latest supported media type. However, only clients |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
675 with knowledge of this capability will know to consult this value. This |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
676 capability is present so the client may issue a more user-friendly error |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
677 when the server has locked out a legacy client. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
678 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
679 mintx=X |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
680 Minimum media type version the server is capable of sending. Value is a |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
681 string like ``0.1``. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
682 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
683 Servers advertising support for the ``application/mercurial-0.2`` media type |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
684 should also advertise the ``compression`` capability. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
685 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
686 This capability was introduced in Mercurial 4.1 (released February 2017). |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
687 |
29863
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
688 httppostargs |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
689 ------------ |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
690 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
691 **Experimental** |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
692 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
693 Indicates that the server supports and prefers clients send command arguments |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
694 via a HTTP POST request as part of the request body. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
695 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
696 This capability was introduced in Mercurial 3.8 (released May 2016). |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
697 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
698 known |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
699 ----- |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
700 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
701 Whether the server supports the ``known`` command. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
702 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
703 This capability/command was introduced in Mercurial 1.9 (released July 2011). |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
704 |
40348
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
705 lfs |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
706 --- |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
707 |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
708 Indicates that the LFS extension is enabled on the server. It makes no claims |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
709 about the repository actually having LFS blobs committed to it. |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
710 |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
711 This capability was introduced by the LFS extension in Mercurial 4.5 (released |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
712 Feb 2018). |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
713 |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
714 lfs-serve |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
715 --------- |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
716 |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
717 Indicates that the LFS extension is enabled on the server, and LFS blobs are |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
718 committed to the remote repository. (Specifically, it indicates that the 'lfs' |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
719 requirement is present in the remote repository.) |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
720 |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
721 This capability was introduced by the LFS extension in Mercurial 4.8 (released |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
722 Nov 2018). |
124507a263e5
help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com>
parents:
39558
diff
changeset
|
723 |
29863
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
724 lookup |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
725 ------ |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
726 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
727 Whether the server supports the ``lookup`` command. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
728 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
729 This capability was introduced in Mercurial 0.9.2 (released December |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
730 2006). |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
731 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
732 This capability was introduced at the same time as the ``changegroupsubset`` |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
733 capability/command. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
734 |
37498
aacfca6f9767
wireproto: support for pullbundles
Joerg Sonnenberger <joerg@bec.de>
parents:
37488
diff
changeset
|
735 partial-pull |
aacfca6f9767
wireproto: support for pullbundles
Joerg Sonnenberger <joerg@bec.de>
parents:
37488
diff
changeset
|
736 ------------ |
aacfca6f9767
wireproto: support for pullbundles
Joerg Sonnenberger <joerg@bec.de>
parents:
37488
diff
changeset
|
737 |
aacfca6f9767
wireproto: support for pullbundles
Joerg Sonnenberger <joerg@bec.de>
parents:
37488
diff
changeset
|
738 Indicates that the client can deal with partial answers to pull requests |
aacfca6f9767
wireproto: support for pullbundles
Joerg Sonnenberger <joerg@bec.de>
parents:
37488
diff
changeset
|
739 by repeating the request. |
aacfca6f9767
wireproto: support for pullbundles
Joerg Sonnenberger <joerg@bec.de>
parents:
37488
diff
changeset
|
740 |
aacfca6f9767
wireproto: support for pullbundles
Joerg Sonnenberger <joerg@bec.de>
parents:
37488
diff
changeset
|
741 If this parameter is not advertised, the server will not send pull bundles. |
aacfca6f9767
wireproto: support for pullbundles
Joerg Sonnenberger <joerg@bec.de>
parents:
37488
diff
changeset
|
742 |
aacfca6f9767
wireproto: support for pullbundles
Joerg Sonnenberger <joerg@bec.de>
parents:
37488
diff
changeset
|
743 This client capability was introduced in Mercurial 4.6. |
aacfca6f9767
wireproto: support for pullbundles
Joerg Sonnenberger <joerg@bec.de>
parents:
37488
diff
changeset
|
744 |
37393
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
745 protocaps |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
746 --------- |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
747 |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
748 Whether the server supports the ``protocaps`` command for SSH V1 transport. |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
749 |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
750 This capability was introduced in Mercurial 4.6. |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
751 |
29863
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
752 pushkey |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
753 ------- |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
754 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
755 Whether the server supports the ``pushkey`` and ``listkeys`` commands. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
756 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
757 This capability was introduced in Mercurial 1.6 (released July 2010). |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
758 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
759 standardbundle |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
760 -------------- |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
761 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
762 **Unsupported** |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
763 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
764 This capability was introduced during the Mercurial 0.9.2 development cycle in |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
765 2006. It was never present in a release, as it was replaced by the ``unbundle`` |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
766 capability. This capability should not be encountered in the wild. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
767 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
768 stream-preferred |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
769 ---------------- |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
770 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
771 If present the server prefers that clients clone using the streaming clone |
34393
fffd3369aa83
commands: rename clone --uncompressed to --stream and document
Gregory Szorc <gregory.szorc@gmail.com>
parents:
32133
diff
changeset
|
772 protocol (``hg clone --stream``) rather than the standard |
29863
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
773 changegroup/bundle based protocol. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
774 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
775 This capability was introduced in Mercurial 2.2 (released May 2012). |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
776 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
777 streamreqs |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
778 ---------- |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
779 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
780 Indicates whether the server supports *streaming clones* and the *requirements* |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
781 that clients must support to receive it. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
782 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
783 If present, the server supports the ``stream_out`` command, which transmits |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
784 raw revlogs from the repository instead of changegroups. This provides a faster |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
785 cloning mechanism at the expense of more bandwidth used. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
786 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
787 The value of this capability is a comma-delimited list of repo format |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
788 *requirements*. These are requirements that impact the reading of data in |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
789 the ``.hg/store`` directory. An example value is |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
790 ``streamreqs=generaldelta,revlogv1`` indicating the server repo requires |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
791 the ``revlogv1`` and ``generaldelta`` requirements. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
792 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
793 If the only format requirement is ``revlogv1``, the server may expose the |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
794 ``stream`` capability instead of the ``streamreqs`` capability. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
795 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
796 This capability was introduced in Mercurial 1.7 (released November 2010). |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
797 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
798 stream |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
799 ------ |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
800 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
801 Whether the server supports *streaming clones* from ``revlogv1`` repos. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
802 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
803 If present, the server supports the ``stream_out`` command, which transmits |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
804 raw revlogs from the repository instead of changegroups. This provides a faster |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
805 cloning mechanism at the expense of more bandwidth used. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
806 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
807 This capability was introduced in Mercurial 0.9.1 (released July 2006). |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
808 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
809 When initially introduced, the value of the capability was the numeric |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
810 revlog revision. e.g. ``stream=1``. This indicates the changegroup is using |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
811 ``revlogv1``. This simple integer value wasn't powerful enough, so the |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
812 ``streamreqs`` capability was invented to handle cases where the repo |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
813 requirements have more than just ``revlogv1``. Newer servers omit the |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
814 ``=1`` since it was the only value supported and the value of ``1`` can |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
815 be implied by clients. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
816 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
817 unbundlehash |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
818 ------------ |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
819 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
820 Whether the ``unbundle`` commands supports receiving a hash of all the |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
821 heads instead of a list. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
822 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
823 For more, see the documentation for the ``unbundle`` command. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
824 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
825 This capability was introduced in Mercurial 1.9 (released July 2011). |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
826 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
827 unbundle |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
828 -------- |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
829 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
830 Whether the server supports pushing via the ``unbundle`` command. |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
831 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
832 This capability/command has been present since Mercurial 0.9.1 (released |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
833 July 2006). |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
834 |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
835 Mercurial 0.9.2 (released December 2006) added values to the capability |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
836 indicating which bundle types the server supports receiving. This value is a |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
837 comma-delimited list. e.g. ``HG10GZ,HG10BZ,HG10UN``. The order of values |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
838 reflects the priority/preference of that type, where the first value is the |
2435ba6c82e6
help: document wire protocol capabilities
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29860
diff
changeset
|
839 most preferred type. |
29864
f0d47aca1d47
help: document wire protocol "handshake" protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29863
diff
changeset
|
840 |
30760
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
841 Content Negotiation |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
842 =================== |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
843 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
844 The wire protocol has some mechanisms to help peers determine what content |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
845 types and encoding the other side will accept. Historically, these mechanisms |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
846 have been built into commands themselves because most commands only send a |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
847 well-defined response type and only certain commands needed to support |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
848 functionality like compression. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
849 |
35975
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
850 Currently, only the HTTP version 1 transport supports content negotiation |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
851 at the protocol layer. |
30760
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
852 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
853 HTTP requests advertise supported response formats via the ``X-HgProto-<N>`` |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
854 request header, where ``<N>`` is an integer starting at 1 allowing the logical |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
855 value to span multiple headers. This value consists of a list of |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
856 space-delimited parameters. Each parameter denotes a feature or capability. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
857 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
858 The following parameters are defined: |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
859 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
860 0.1 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
861 Indicates the client supports receiving ``application/mercurial-0.1`` |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
862 responses. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
863 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
864 0.2 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
865 Indicates the client supports receiving ``application/mercurial-0.2`` |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
866 responses. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
867 |
37557
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
868 cbor |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
869 Indicates the client supports receiving ``application/mercurial-cbor`` |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
870 responses. |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
871 |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
872 (Only intended to be used with version 2 transports.) |
734515aca84d
wireproto: define and implement HTTP handshake to upgrade protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37554
diff
changeset
|
873 |
30760
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
874 comp |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
875 Indicates compression formats the client can decode. Value is a list of |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
876 comma delimited strings identifying compression formats ordered from |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
877 most preferential to least preferential. e.g. ``comp=zstd,zlib,none``. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
878 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
879 This parameter does not have an effect if only the ``0.1`` parameter |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
880 is defined, as support for ``application/mercurial-0.2`` or greater is |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
881 required to use arbitrary compression formats. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
882 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
883 If this parameter is not advertised, the server interprets this as |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
884 equivalent to ``zlib,none``. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
885 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
886 Clients may choose to only send this header if the ``httpmediatype`` |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
887 server capability is present, as currently all server-side features |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
888 consulting this header require the client to opt in to new protocol features |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
889 advertised via the ``httpmediatype`` capability. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
890 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
891 A server that doesn't receive an ``X-HgProto-<N>`` header should infer a |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
892 value of ``0.1``. This is compatible with legacy clients. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
893 |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
894 A server receiving a request indicating support for multiple media type |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
895 versions may respond with any of the supported media types. Not all servers |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
896 may support all media types on all commands. |
753b9d43ca81
internals: document compression negotiation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29865
diff
changeset
|
897 |
29865
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
898 Commands |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
899 ======== |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
900 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
901 This section contains a list of all wire protocol commands implemented by |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
902 the canonical Mercurial server. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
903 |
39439
dc61a67c1fc0
internals: extract wire protocol version 2 commands to standalone doc
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37726
diff
changeset
|
904 See :hg:`help internals.wireprotocolv2` for information on commands exposed |
dc61a67c1fc0
internals: extract wire protocol version 2 commands to standalone doc
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37726
diff
changeset
|
905 to the frame-based protocol. |
dc61a67c1fc0
internals: extract wire protocol version 2 commands to standalone doc
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37726
diff
changeset
|
906 |
29865
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
907 batch |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
908 ----- |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
909 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
910 Issue multiple commands while sending a single command request. The purpose |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
911 of this command is to allow a client to issue multiple commands while avoiding |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
912 multiple round trips to the server therefore enabling commands to complete |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
913 quicker. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
914 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
915 The command accepts a ``cmds`` argument that contains a list of commands to |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
916 execute. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
917 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
918 The value of ``cmds`` is a ``;`` delimited list of strings. Each string has the |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
919 form ``<command> <arguments>``. That is, the command name followed by a space |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
920 followed by an argument string. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
921 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
922 The argument string is a ``,`` delimited list of ``<key>=<value>`` values |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
923 corresponding to command arguments. Both the argument name and value are |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
924 escaped using a special substitution map:: |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
925 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
926 : -> :c |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
927 , -> :o |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
928 ; -> :s |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
929 = -> :e |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
930 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
931 The response type for this command is ``string``. The value contains a |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
932 ``;`` delimited list of responses for each requested command. Each value |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
933 in this list is escaped using the same substitution map used for arguments. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
934 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
935 If an error occurs, the generic error response may be sent. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
936 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
937 between |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
938 ------- |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
939 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
940 (Legacy command used for discovery in old clients) |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
941 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
942 Obtain nodes between pairs of nodes. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
943 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
944 The ``pairs`` arguments contains a space-delimited list of ``-`` delimited |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
945 hex node pairs. e.g.:: |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
946 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
947 a072279d3f7fd3a4aa7ffa1a5af8efc573e1c896-6dc58916e7c070f678682bfe404d2e2d68291a18 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
948 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
949 Return type is a ``string``. Value consists of lines corresponding to each |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
950 requested range. Each line contains a space-delimited list of hex nodes. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
951 A newline ``\n`` terminates each line, including the last one. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
952 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
953 branchmap |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
954 --------- |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
955 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
956 Obtain heads in named branches. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
957 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
958 Accepts no arguments. Return type is a ``string``. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
959 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
960 Return value contains lines with URL encoded branch names followed by a space |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
961 followed by a space-delimited list of hex nodes of heads on that branch. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
962 e.g.:: |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
963 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
964 default a072279d3f7fd3a4aa7ffa1a5af8efc573e1c896 6dc58916e7c070f678682bfe404d2e2d68291a18 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
965 stable baae3bf31522f41dd5e6d7377d0edd8d1cf3fccc |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
966 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
967 There is no trailing newline. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
968 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
969 branches |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
970 -------- |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
971 |
32133
435a3842ca3a
internals: document that "branches" is a legacy wire command
Siddharth Agarwal <sid0@fb.com>
parents:
30761
diff
changeset
|
972 (Legacy command used for discovery in old clients. Clients with ``getbundle`` |
435a3842ca3a
internals: document that "branches" is a legacy wire command
Siddharth Agarwal <sid0@fb.com>
parents:
30761
diff
changeset
|
973 use the ``known`` and ``heads`` commands instead.) |
435a3842ca3a
internals: document that "branches" is a legacy wire command
Siddharth Agarwal <sid0@fb.com>
parents:
30761
diff
changeset
|
974 |
29865
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
975 Obtain ancestor changesets of specific nodes back to a branch point. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
976 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
977 Despite the name, this command has nothing to do with Mercurial named branches. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
978 Instead, it is related to DAG branches. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
979 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
980 The command accepts a ``nodes`` argument, which is a string of space-delimited |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
981 hex nodes. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
982 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
983 For each node requested, the server will find the first ancestor node that is |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
984 a DAG root or is a merge. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
985 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
986 Return type is a ``string``. Return value contains lines with result data for |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
987 each requested node. Each line contains space-delimited nodes followed by a |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
988 newline (``\n``). The 4 nodes reported on each line correspond to the requested |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
989 node, the ancestor node found, and its 2 parent nodes (which may be the null |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
990 node). |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
991 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
992 capabilities |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
993 ------------ |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
994 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
995 Obtain the capabilities string for the repo. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
996 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
997 Unlike the ``hello`` command, the capabilities string is not prefixed. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
998 There is no trailing newline. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
999 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1000 This command does not accept any arguments. Return type is a ``string``. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1001 |
35883
0d8024be7166
internals: document when "hello" and "capabilities" commands were added
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35267
diff
changeset
|
1002 This command was introduced in Mercurial 0.9.1 (released July 2006). |
0d8024be7166
internals: document when "hello" and "capabilities" commands were added
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35267
diff
changeset
|
1003 |
29865
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1004 changegroup |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1005 ----------- |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1006 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1007 (Legacy command: use ``getbundle`` instead) |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1008 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1009 Obtain a changegroup version 1 with data for changesets that are |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1010 descendants of client-specified changesets. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1011 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1012 The ``roots`` arguments contains a list of space-delimited hex nodes. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1013 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1014 The server responds with a changegroup version 1 containing all |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1015 changesets between the requested root/base nodes and the repo's head nodes |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1016 at the time of the request. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1017 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1018 The return type is a ``stream``. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1019 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1020 changegroupsubset |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1021 ----------------- |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1022 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1023 (Legacy command: use ``getbundle`` instead) |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1024 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1025 Obtain a changegroup version 1 with data for changesetsets between |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1026 client specified base and head nodes. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1027 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1028 The ``bases`` argument contains a list of space-delimited hex nodes. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1029 The ``heads`` argument contains a list of space-delimited hex nodes. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1030 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1031 The server responds with a changegroup version 1 containing all |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1032 changesets between the requested base and head nodes at the time of the |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1033 request. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1034 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1035 The return type is a ``stream``. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1036 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1037 clonebundles |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1038 ------------ |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1039 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1040 Obtains a manifest of bundle URLs available to seed clones. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1041 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1042 Each returned line contains a URL followed by metadata. See the |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1043 documentation in the ``clonebundles`` extension for more. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1044 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1045 The return type is a ``string``. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1046 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1047 getbundle |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1048 --------- |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1049 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1050 Obtain a bundle containing repository data. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1051 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1052 This command accepts the following arguments: |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1053 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1054 heads |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1055 List of space-delimited hex nodes of heads to retrieve. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1056 common |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1057 List of space-delimited hex nodes that the client has in common with the |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1058 server. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1059 obsmarkers |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1060 Boolean indicating whether to include obsolescence markers as part |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1061 of the response. Only works with bundle2. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1062 bundlecaps |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1063 Comma-delimited set of strings defining client bundle capabilities. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1064 listkeys |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1065 Comma-delimited list of strings of ``pushkey`` namespaces. For each |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1066 namespace listed, a bundle2 part will be included with the content of |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1067 that namespace. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1068 cg |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1069 Boolean indicating whether changegroup data is requested. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1070 cbattempted |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1071 Boolean indicating whether the client attempted to use the *clone bundles* |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1072 feature before performing this request. |
35267
cb4dcd7fabe7
getbundle: add support for 'bookmarks' boolean argument
Boris Feld <boris.feld@octobus.net>
parents:
34930
diff
changeset
|
1073 bookmarks |
cb4dcd7fabe7
getbundle: add support for 'bookmarks' boolean argument
Boris Feld <boris.feld@octobus.net>
parents:
34930
diff
changeset
|
1074 Boolean indicating whether bookmark data is requested. |
34930
28baeab476cc
internal-doc: document the 'phases' parameters to 'getbundle'
Boris Feld <boris.feld@octobus.net>
parents:
34393
diff
changeset
|
1075 phases |
28baeab476cc
internal-doc: document the 'phases' parameters to 'getbundle'
Boris Feld <boris.feld@octobus.net>
parents:
34393
diff
changeset
|
1076 Boolean indicating whether phases data is requested. |
29865
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1077 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1078 The return type on success is a ``stream`` where the value is bundle. |
35975
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
1079 On the HTTP version 1 transport, the response is zlib compressed. |
29865
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1080 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1081 If an error occurs, a generic error response can be sent. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1082 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1083 Unless the client sends a false value for the ``cg`` argument, the returned |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1084 bundle contains a changegroup with the nodes between the specified ``common`` |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1085 and ``heads`` nodes. Depending on the command arguments, the type and content |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1086 of the returned bundle can vary significantly. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1087 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1088 The default behavior is for the server to send a raw changegroup version |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1089 ``01`` response. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1090 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1091 If the ``bundlecaps`` provided by the client contain a value beginning |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1092 with ``HG2``, a bundle2 will be returned. The bundle2 data may contain |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1093 additional repository data, such as ``pushkey`` namespace values. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1094 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1095 heads |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1096 ----- |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1097 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1098 Returns a list of space-delimited hex nodes of repository heads followed |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1099 by a newline. e.g. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1100 ``a9eeb3adc7ddb5006c088e9eda61791c777cbf7c 31f91a3da534dc849f0d6bfc00a395a97cf218a1\n`` |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1101 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1102 This command does not accept any arguments. The return type is a ``string``. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1103 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1104 hello |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1105 ----- |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1106 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1107 Returns lines describing interesting things about the server in an RFC-822 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1108 like format. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1109 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1110 Currently, the only line defines the server capabilities. It has the form:: |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1111 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1112 capabilities: <value> |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1113 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1114 See above for more about the capabilities string. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1115 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1116 SSH clients typically issue this command as soon as a connection is |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1117 established. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1118 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1119 This command does not accept any arguments. The return type is a ``string``. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1120 |
35883
0d8024be7166
internals: document when "hello" and "capabilities" commands were added
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35267
diff
changeset
|
1121 This command was introduced in Mercurial 0.9.1 (released July 2006). |
0d8024be7166
internals: document when "hello" and "capabilities" commands were added
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35267
diff
changeset
|
1122 |
29865
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1123 listkeys |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1124 -------- |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1125 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1126 List values in a specified ``pushkey`` namespace. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1127 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1128 The ``namespace`` argument defines the pushkey namespace to operate on. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1129 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1130 The return type is a ``string``. The value is an encoded dictionary of keys. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1131 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1132 Key-value pairs are delimited by newlines (``\n``). Within each line, keys and |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1133 values are separated by a tab (``\t``). Keys and values are both strings. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1134 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1135 lookup |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1136 ------ |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1137 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1138 Try to resolve a value to a known repository revision. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1139 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1140 The ``key`` argument is converted from bytes to an |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1141 ``encoding.localstr`` instance then passed into |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1142 ``localrepository.__getitem__`` in an attempt to resolve it. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1143 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1144 The return type is a ``string``. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1145 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1146 Upon successful resolution, returns ``1 <hex node>\n``. On failure, |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1147 returns ``0 <error string>\n``. e.g.:: |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1148 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1149 1 273ce12ad8f155317b2c078ec75a4eba507f1fba\n |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1150 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1151 0 unknown revision 'foo'\n |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1152 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1153 known |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1154 ----- |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1155 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1156 Determine whether multiple nodes are known. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1157 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1158 The ``nodes`` argument is a list of space-delimited hex nodes to check |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1159 for existence. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1160 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1161 The return type is ``string``. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1162 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1163 Returns a string consisting of ``0``s and ``1``s indicating whether nodes |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1164 are known. If the Nth node specified in the ``nodes`` argument is known, |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1165 a ``1`` will be returned at byte offset N. If the node isn't known, ``0`` |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1166 will be present at byte offset N. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1167 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1168 There is no trailing newline. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1169 |
37393
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
1170 protocaps |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
1171 --------- |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
1172 |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
1173 Notify the server about the client capabilities in the SSH V1 transport |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
1174 protocol. |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
1175 |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
1176 The ``caps`` argument is a space-delimited list of capabilities. |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
1177 |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
1178 The server will reply with the string ``OK``. |
afcfdf53e4b5
wireproto: provide accessors for client capabilities
Joerg Sonnenberger <joerg@bec.de>
parents:
37319
diff
changeset
|
1179 |
29865
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1180 pushkey |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1181 ------- |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1182 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1183 Set a value using the ``pushkey`` protocol. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1184 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1185 Accepts arguments ``namespace``, ``key``, ``old``, and ``new``, which |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1186 correspond to the pushkey namespace to operate on, the key within that |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1187 namespace to change, the old value (which may be empty), and the new value. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1188 All arguments are string types. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1189 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1190 The return type is a ``string``. The value depends on the transport protocol. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1191 |
35975
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
1192 The SSH version 1 transport sends a string encoded integer followed by a |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
1193 newline (``\n``) which indicates operation result. The server may send |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
1194 additional output on the ``stderr`` stream that should be displayed to the |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
1195 user. |
29865
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1196 |
35975
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
1197 The HTTP version 1 transport sends a string encoded integer followed by a |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
1198 newline followed by additional server output that should be displayed to |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
1199 the user. This may include output from hooks, etc. |
29865
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1200 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1201 The integer result varies by namespace. ``0`` means an error has occurred |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1202 and there should be additional output to display to the user. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1203 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1204 stream_out |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1205 ---------- |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1206 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1207 Obtain *streaming clone* data. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1208 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1209 The return type is either a ``string`` or a ``stream``, depending on |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1210 whether the request was fulfilled properly. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1211 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1212 A return value of ``1\n`` indicates the server is not configured to serve |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1213 this data. If this is seen by the client, they may not have verified the |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1214 ``stream`` capability is set before making the request. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1215 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1216 A return value of ``2\n`` indicates the server was unable to lock the |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1217 repository to generate data. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1218 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1219 All other responses are a ``stream`` of bytes. The first line of this data |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1220 contains 2 space-delimited integers corresponding to the path count and |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1221 payload size, respectively:: |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1222 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1223 <path count> <payload size>\n |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1224 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1225 The ``<payload size>`` is the total size of path data: it does not include |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1226 the size of the per-path header lines. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1227 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1228 Following that header are ``<path count>`` entries. Each entry consists of a |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1229 line with metadata followed by raw revlog data. The line consists of:: |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1230 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1231 <store path>\0<size>\n |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1232 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1233 The ``<store path>`` is the encoded store path of the data that follows. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1234 ``<size>`` is the amount of data for this store path/revlog that follows the |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1235 newline. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1236 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1237 There is no trailer to indicate end of data. Instead, the client should stop |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1238 reading after ``<path count>`` entries are consumed. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1239 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1240 unbundle |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1241 -------- |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1242 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1243 Send a bundle containing data (usually changegroup data) to the server. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1244 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1245 Accepts the argument ``heads``, which is a space-delimited list of hex nodes |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1246 corresponding to server repository heads observed by the client. This is used |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1247 to detect race conditions and abort push operations before a server performs |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1248 too much work or a client transfers too much data. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1249 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1250 The request payload consists of a bundle to be applied to the repository, |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1251 similarly to as if :hg:`unbundle` were called. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1252 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1253 In most scenarios, a special ``push response`` type is returned. This type |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1254 contains an integer describing the change in heads as a result of the |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1255 operation. A value of ``0`` indicates nothing changed. ``1`` means the number |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1256 of heads remained the same. Values ``2`` and larger indicate the number of |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1257 added heads minus 1. e.g. ``3`` means 2 heads were added. Negative values |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1258 indicate the number of fewer heads, also off by 1. e.g. ``-2`` means there |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1259 is 1 fewer head. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1260 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1261 The encoding of the ``push response`` type varies by transport. |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1262 |
35975
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
1263 For the SSH version 1 transport, this type is composed of 2 ``string`` |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
1264 responses: an empty response (``0\n``) followed by the integer result value. |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
1265 e.g. ``1\n2``. So the full response might be ``0\n1\n2``. |
29865
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1266 |
35975
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
1267 For the HTTP version 1 transport, the response is a ``string`` type composed |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
1268 of an integer result value followed by a newline (``\n``) followed by string |
29865
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1269 content holding server output that should be displayed on the client (output |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1270 hooks, etc). |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1271 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1272 In some cases, the server may respond with a ``bundle2`` bundle. In this |
35975
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
1273 case, the response type is ``stream``. For the HTTP version 1 transport, the |
40d94ea51402
internals: refactor wire protocol documentation
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35883
diff
changeset
|
1274 response is zlib compressed. |
29865
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1275 |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1276 The server may also respond with a generic error type, which contains a string |
80c11c1a64bf
help: document wire protocol commands
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29864
diff
changeset
|
1277 indicating the failure. |