credential: add method for querying capabilities
Right now, there's no specific way to determine whether a credential helper or git credential itself supports a given set of capabilities. It would be helpful to have such a way, so let's let credential helpers and git credential take an argument, "capability", which has it list the capabilities and a version number on standard output. Specifically choose a format that is slightly different from regular credential output and assume that no capabilities are supported if a non-zero exit status occurs or the data deviates from the format. It is common for users to write small shell scripts as the argument to credential.helper, which will almost never be designed to emit capabilities. We want callers to gracefully handle this case by assuming that they are not capable of extended support because that is almost certainly the case, and specifying the error behavior up front does this and preserves backwards compatibility in a graceful way. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
40220f48b1
commit
ffff4ac065
11
credential.c
11
credential.c
@ -72,6 +72,17 @@ void credential_set_all_capabilities(struct credential *c,
|
||||
credential_set_capability(&c->capa_state, op_type);
|
||||
}
|
||||
|
||||
static void announce_one(struct credential_capability *cc, const char *name, FILE *fp) {
|
||||
if (cc->request_initial)
|
||||
fprintf(fp, "capability %s\n", name);
|
||||
}
|
||||
|
||||
void credential_announce_capabilities(struct credential *c, FILE *fp) {
|
||||
fprintf(fp, "version 0\n");
|
||||
announce_one(&c->capa_authtype, "authtype", fp);
|
||||
announce_one(&c->capa_state, "state", fp);
|
||||
}
|
||||
|
||||
int credential_match(const struct credential *want,
|
||||
const struct credential *have, int match_password)
|
||||
{
|
||||
|
Reference in New Issue
Block a user