diff options
author | Brandon Williams <bmwill@google.com> | 2018-03-15 18:31:19 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-03-15 20:01:08 +0100 |
commit | ed10cb952d315ae47d2f7f6f29333a9ee227bf6b (patch) | |
tree | a43a1a343f94885533ba29358aab9c673aa95e29 /builtin/serve.c | |
parent | test-pkt-line: introduce a packet-line test helper (diff) | |
download | git-ed10cb952d315ae47d2f7f6f29333a9ee227bf6b.tar.xz git-ed10cb952d315ae47d2f7f6f29333a9ee227bf6b.zip |
serve: introduce git-serve
Introduce git-serve, the base server for protocol version 2.
Protocol version 2 is intended to be a replacement for Git's current
wire protocol. The intention is that it will be a simpler, less
wasteful protocol which can evolve over time.
Protocol version 2 improves upon version 1 by eliminating the initial
ref advertisement. In its place a server will export a list of
capabilities and commands which it supports in a capability
advertisement. A client can then request that a particular command be
executed by providing a number of capabilities and command specific
parameters. At the completion of a command, a client can request that
another command be executed or can terminate the connection by sending a
flush packet.
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/serve.c')
-rw-r--r-- | builtin/serve.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/builtin/serve.c b/builtin/serve.c new file mode 100644 index 0000000000..d3fd240bb3 --- /dev/null +++ b/builtin/serve.c @@ -0,0 +1,30 @@ +#include "cache.h" +#include "builtin.h" +#include "parse-options.h" +#include "serve.h" + +static char const * const serve_usage[] = { + N_("git serve [<options>]"), + NULL +}; + +int cmd_serve(int argc, const char **argv, const char *prefix) +{ + struct serve_options opts = SERVE_OPTIONS_INIT; + + struct option options[] = { + OPT_BOOL(0, "stateless-rpc", &opts.stateless_rpc, + N_("quit after a single request/response exchange")), + OPT_BOOL(0, "advertise-capabilities", &opts.advertise_capabilities, + N_("exit immediately after advertising capabilities")), + OPT_END() + }; + + /* ignore all unknown cmdline switches for now */ + argc = parse_options(argc, argv, prefix, options, serve_usage, + PARSE_OPT_KEEP_DASHDASH | + PARSE_OPT_KEEP_UNKNOWN); + serve(&opts); + + return 0; +} |