HTTP commands are sent as CGI requests having the following form:
GET /hgweb.cgi?cmd=foo¶m1=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.
The available commands can be seen marked with @wireprotocommand in mercurial/wireprotov1server.py, along with arguments.
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).
$ 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
Returns a space separated list of changeset ID identifying all the heads in the repository. Takes no parameters
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.
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.