提交 28ed5b35 编写于 作者: I Ilari Liusvaara 提交者: Junio C Hamano

Support mandatory capabilities

Add support for marking capability as mandatory for hosting git version
to understand. This is useful for helpers which require various types
of assistance from main git binary.
Signed-off-by: NIlari Liusvaara <ilari.liusvaara@elisanet.fi>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 bf3c523c
......@@ -25,7 +25,10 @@ Commands are given by the caller on the helper's standard input, one per line.
'capabilities'::
Lists the capabilities of the helper, one per line, ending
with a blank line.
with a blank line. Each capability may be preceeded with '*'.
This marks them mandatory for git version using the remote
helper to understand (unknown mandatory capability is fatal
error).
'list'::
Lists the refs, one per line, in the format "<value> <name>
......
......@@ -93,25 +93,38 @@ static struct child_process *get_helper(struct transport *transport)
data->out = xfdopen(helper->out, "r");
while (1) {
const char *capname;
int mandatory = 0;
recvline(data, &buf);
if (!*buf.buf)
break;
if (*buf.buf == '*') {
capname = buf.buf + 1;
mandatory = 1;
} else
capname = buf.buf;
if (debug)
fprintf(stderr, "Debug: Got cap %s\n", buf.buf);
if (!strcmp(buf.buf, "fetch"))
fprintf(stderr, "Debug: Got cap %s\n", capname);
if (!strcmp(capname, "fetch"))
data->fetch = 1;
if (!strcmp(buf.buf, "option"))
else if (!strcmp(capname, "option"))
data->option = 1;
if (!strcmp(buf.buf, "push"))
else if (!strcmp(capname, "push"))
data->push = 1;
if (!strcmp(buf.buf, "import"))
else if (!strcmp(capname, "import"))
data->import = 1;
if (!data->refspecs && !prefixcmp(buf.buf, "refspec ")) {
else if (!data->refspecs && !prefixcmp(capname, "refspec ")) {
ALLOC_GROW(refspecs,
refspec_nr + 1,
refspec_alloc);
refspecs[refspec_nr++] = strdup(buf.buf + strlen("refspec "));
} else if (mandatory) {
die("Unknown madatory capability %s. This remote "
"helper probably needs newer version of Git.\n",
capname);
}
}
if (refspecs) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册