Commit d5742425 authored by Jeff King's avatar Jeff King Committed by Junio C Hamano

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: default avatarJeff King <peff@peff.net>
Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
parent 11825072
...@@ -65,6 +65,10 @@ static int credential_config_callback(const char *var, const char *value, ...@@ -65,6 +65,10 @@ static int credential_config_callback(const char *var, const char *value,
if (!strcmp(key, "helper")) if (!strcmp(key, "helper"))
string_list_append(&c->helpers, value); string_list_append(&c->helpers, value);
else if (!strcmp(key, "username")) {
if (!c->username)
c->username = xstrdup(value);
}
return 0; return 0;
} }
......
...@@ -234,4 +234,17 @@ test_expect_success 'do not match configured credential' ' ...@@ -234,4 +234,17 @@ test_expect_success 'do not match configured credential' '
EOF 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 test_done
...@@ -113,6 +113,22 @@ test_expect_success 'http auth respects credential helper config' ' ...@@ -113,6 +113,22 @@ test_expect_success 'http auth respects credential helper config' '
expect_askpass none 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' ' test_expect_success 'fetch changes via http' '
echo content >>file && echo content >>file &&
git commit -a -m two && git commit -a -m two &&
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment