Differences between revisions 5 and 10 (spanning 5 versions)
Revision 5 as of 2009-10-24 20:27:06
Size: 298
Editor: JuanDelgado
Comment:
Revision 10 as of 2019-04-20 09:21:10
Size: 2241
Comment: interwiki markup, copywriting, examples using m-s.o/repo/hello
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:
http://server.net/hgweb.cgi?cmd=foo&param1=bar GET /hgweb.cgi?cmd=foo&param1=bar HTTP/1.1
Line 7: Line 7:
Results are returned with the Content-Type application/mercurial-0.1.

The best way to explore the protocol is to run `hg serve` in a terminal, then try out the various commands. Errors, such as missing parameters, will be logged in the terminal window, including source references.
Line 8: Line 12:
 *lookup
 *heads
 *branches
 *changegroup
 *changegroupsubset
 *between
 *capabilities
 *unbundle
 *stream_out

The available commands can be seen marked with `@wireprotocommand` in [[Source:mercurial/wireprotov1server.py]] (wire protocol version 1) and [[Source:mercurial/wireprotov2server.py]] (version 2), along with arguments.

=== lookup ===

Given a changeset reference (given by the `key` parameter), yields the [[ChangeSetID|changeset ID]].

Returns a status code (1 on success, 0 on failure) and a result (the changeset ID or error message).

Examples:
{{{
$ curl 'https://www.mercurial-scm.org/repo/hello?cmd=lookup&key=0'
1 0a04b987be5ae354b710cefeba0e2d9de7ad41a9

$ curl 'https://www.mercurial-scm.org/repo/hello?cmd=lookup&key=33d290cc14ae48c8c18d2a2c9dfae99728ee0cff'
0 unknown revision '33d290cc14ae48c8c18d2a2c9dfae99728ee0cff'

$ curl 'https://www.mercurial-scm.org/repo/hello?cmd=lookup&key=tip'
1 82e55d328c8ca4ee16520036c0aaace03a5beb65
}}}

=== heads ===

Returns a space separated list of [[ChangeSetID|changeset ID]] identifying all the heads in the repository. Takes no parameters

=== branches ===

=== changegroup ===
=== changegroupsubset ===
=== between ===
=== capabilities ===
Accepts no parameters. Returns a whitespace-separated list of other commands accepted by this server.
For the ''unbundle'' command, produces the form unbundle=HG10GZ,HG10BZ,HG10UN if all three compression
schemes are supported.
=== unbundle ===
Usage:
{{{
POST /hgweb.cgi?cmd=unbundle&heads=HEADS HTTP/1.1
content-type: application/octet-stream
}}}

This command allows for the upload of new changes to the repository. The body of the POST request must be
a changegroup in BundleFormat. The returned output is the same as what the ''hg unbundle'' command would print to standard output if it was being run locally.

=== stream_out ===

HTTP commands are sent as CGI requests having the following form:

GET /hgweb.cgi?cmd=foo&param1=bar HTTP/1.1

Results are returned with the Content-Type application/mercurial-0.1.

The best way to explore the protocol is to run hg serve in a terminal, then try out the various commands. Errors, such as missing parameters, will be logged in the terminal window, including source references.

Available commands

The available commands can be seen marked with @wireprotocommand in mercurial/wireprotov1server.py (wire protocol version 1) and mercurial/wireprotov2server.py (version 2), along with arguments.

lookup

Given a changeset reference (given by the key parameter), yields the changeset ID.

Returns a status code (1 on success, 0 on failure) and a result (the changeset ID or error message).

Examples:

$ curl 'https://www.mercurial-scm.org/repo/hello?cmd=lookup&key=0'
1 0a04b987be5ae354b710cefeba0e2d9de7ad41a9

$ curl 'https://www.mercurial-scm.org/repo/hello?cmd=lookup&key=33d290cc14ae48c8c18d2a2c9dfae99728ee0cff'
0 unknown revision '33d290cc14ae48c8c18d2a2c9dfae99728ee0cff'

$ curl 'https://www.mercurial-scm.org/repo/hello?cmd=lookup&key=tip'
1 82e55d328c8ca4ee16520036c0aaace03a5beb65

heads

Returns a space separated list of changeset ID identifying all the heads in the repository. Takes no parameters

branches

changegroup

changegroupsubset

between

capabilities

Accepts no parameters. Returns a whitespace-separated list of other commands accepted by this server. For the unbundle command, produces the form unbundle=HG10GZ,HG10BZ,HG10UN if all three compression schemes are supported.

unbundle

Usage:

POST /hgweb.cgi?cmd=unbundle&heads=HEADS HTTP/1.1
content-type: application/octet-stream

This command allows for the upload of new changes to the repository. The body of the POST request must be a changegroup in BundleFormat. The returned output is the same as what the hg unbundle command would print to standard output if it was being run locally.

stream_out


CategoryInternals

HttpCommandProtocol (last edited 2022-05-27 06:29:35 by aayjaychan)