From d5742425ebfd3060fd181195f3be84cd28c1d06f Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sat, 10 Dec 2011 05:31:30 -0500 Subject: credential: add credential.*.username Credential helpers can help users avoid having to type their username and password over and over. However, some users may not want a helper for their password, or they may be running a helper which caches for a short time. In this case, it is convenient to provide the non-secret username portion of their credential via config. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- credential.c | 4 ++++ t/t0300-credentials.sh | 13 +++++++++++++ t/t5550-http-fetch.sh | 16 ++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/credential.c b/credential.c index 96be1c22dd..3c17ea1973 100644 --- a/credential.c +++ b/credential.c @@ -65,6 +65,10 @@ static int credential_config_callback(const char *var, const char *value, if (!strcmp(key, "helper")) string_list_append(&c->helpers, value); + else if (!strcmp(key, "username")) { + if (!c->username) + c->username = xstrdup(value); + } return 0; } diff --git a/t/t0300-credentials.sh b/t/t0300-credentials.sh index 42d0f5b707..53e94bc038 100755 --- a/t/t0300-credentials.sh +++ b/t/t0300-credentials.sh @@ -234,4 +234,17 @@ test_expect_success 'do not match configured credential' ' EOF ' +test_expect_success 'pull username from config' ' + test_config credential.https://example.com.username foo && + check fill <<-\EOF + protocol=https + host=example.com + -- + username=foo + password=askpass-password + -- + askpass: Password for '\''https://foo@example.com'\'': + EOF +' + test_done diff --git a/t/t5550-http-fetch.sh b/t/t5550-http-fetch.sh index c59908fe77..3262f903e1 100755 --- a/t/t5550-http-fetch.sh +++ b/t/t5550-http-fetch.sh @@ -113,6 +113,22 @@ test_expect_success 'http auth respects credential helper config' ' expect_askpass none ' +test_expect_success 'http auth can get username from config' ' + test_config_global "credential.$HTTPD_URL.username" user@host && + >askpass-query && + echo user@host >askpass-response && + git clone "$HTTPD_URL/auth/repo.git" clone-auth-user && + expect_askpass pass user@host +' + +test_expect_success 'configured username does not override URL' ' + test_config_global "credential.$HTTPD_URL.username" wrong && + >askpass-query && + echo user@host >askpass-response && + git clone "$HTTPD_URL_USER/auth/repo.git" clone-auth-user2 && + expect_askpass pass user@host +' + test_expect_success 'fetch changes via http' ' echo content >>file && git commit -a -m two && -- cgit v1.2.3