help: internals topic for wire protocol

The Mercurial wire protocol is under-documented. This includes a lack
of source docstrings and comments as well as pages on the official
wiki.

This patch adds the beginnings of "internals" documentation on the
wire protocol.

The documentation should have nearly complete coverage on the
lower-level parts of the protocol, such as the different transport
mechanims, how commands and arguments are sent, capabilities, and,
of course, the commands themselves.

As part of writing this documentation, I discovered a number of
deficiencies in the protocol and bugs in the implementation. I've
started sending patches for some of the issues. I hope to send a lot
more.

This patch starts with the scaffolding for a new internals page.
This commit is contained in:
Gregory Szorc 2016-08-22 19:46:39 -07:00
parent 23829625a1
commit 5c136c2209
4 changed files with 22 additions and 0 deletions

View File

@ -42,6 +42,7 @@
<File Id="internals.changegroups.txt" Name="changegroups.txt" />
<File Id="internals.requirements.txt" Name="requirements.txt" />
<File Id="internals.revlogs.txt" Name="revlogs.txt" />
<File Id="internals.wireprotocol.txt" Name="wireprotocol.txt" />
</Component>
</Directory>

View File

@ -192,6 +192,8 @@ internalstable = sorted([
loaddoc('requirements', subdir='internals')),
(['revlogs'], _('Revision Logs'),
loaddoc('revlogs', subdir='internals')),
(['wireprotocol'], _('Wire Protocol'),
loaddoc('wireprotocol', subdir='internals')),
])
def internalshelp(ui):

View File

@ -0,0 +1,11 @@
The Mercurial wire protocol is a request-response based protocol
with multiple wire representations.
Each request is modeled as a command name, a dictionary of arguments, and
optional raw input. Command arguments and their types are intrinsic
properties of commands. So is the response type of the command. This means
clients can't always send arbitrary arguments to servers and servers can't
return multiple response types.
The protocol is synchronous and does not support multiplexing (concurrent
commands).

View File

@ -933,6 +933,7 @@ internals topic renders index of available sub-topics
changegroups Changegroups
requirements Repository Requirements
revlogs Revision Logs
wireprotocol Wire Protocol
sub-topics can be accessed
@ -2895,6 +2896,13 @@ Sub-topic indexes rendered properly
</td><td>
Revision Logs
</td></tr>
<tr><td>
<a href="/help/internals.wireprotocol">
wireprotocol
</a>
</td><td>
Wire Protocol
</td></tr>