This is an archive of the discontinued Mercurial Phabricator instance.

wireproto: implement capabilities for wire protocol v2
ClosedPublic

Authored by indygreg on Apr 9 2018, 2:58 PM.

Details

Summary

The capabilities mechanism for wire protocol version 2 represents a
clean break from version 1.

Instead of effectively exchanging a set of capabilities, we're
exchanging a rich data structure.

This data structure currently contains information about
every available command, including its accepted arguments. It also
contains information about supported compression formats.

Exposing information about supported commands will allow clients
to automatically generate bindings to the server. Clients will be
able to do things like detect when they are attempting to run a
command that isn't known to the server. Exposing the required
permissions to run a command can be used by clients to determine if
they have privileges to call a command before actually calling it.
We could potentially even have clients send credentials
preemptively without waiting for the server to deny the command
request. Lots of potential here.

The data returned by this command will likely evolve heavily. So we
shouldn't bikeshed the implementation just yet.

Diff Detail

Repository
rHG Mercurial
Lint
Lint Skipped
Unit
Unit Tests Skipped

Event Timeline

indygreg created this revision.Apr 9 2018, 2:58 PM
durin42 accepted this revision.Apr 9 2018, 6:27 PM
This revision is now accepted and ready to land.Apr 9 2018, 6:27 PM
This revision was automatically updated to reflect the committed changes.