credential: load default config

Make `git credential fill` honour the core.askPass variable.

Signed-off-by: Thomas Koutcher <thomas.koutcher@online.fr>
[jk: added test]
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Thomas Koutcher 2020-10-15 21:59:20 +00:00 committed by Junio C Hamano
parent a5fa49ff0a
commit 567ad2c0f9
2 changed files with 29 additions and 0 deletions

View File

@ -1,6 +1,7 @@
#include "git-compat-util.h"
#include "credential.h"
#include "builtin.h"
#include "config.h"
static const char usage_msg[] =
"git credential [fill|approve|reject]";
@ -10,6 +11,8 @@ int cmd_credential(int argc, const char **argv, const char *prefix)
const char *op;
struct credential c = CREDENTIAL_INIT;
git_config(git_default_config, NULL);
if (argc != 2 || !strcmp(argv[1], "-h"))
usage(usage_msg);
op = argv[1];

View File

@ -265,6 +265,32 @@ test_expect_success 'internal getpass does not ask for known username' '
EOF
'
test_expect_success 'git-credential respects core.askPass' '
write_script alternate-askpass <<-\EOF &&
echo >&2 "alternate askpass invoked"
echo alternate-value
EOF
test_config core.askpass "$PWD/alternate-askpass" &&
(
# unset GIT_ASKPASS set by lib-credential.sh which would
# override our config, but do so in a subshell so that we do
# not interfere with other tests
sane_unset GIT_ASKPASS &&
check fill <<-\EOF
protocol=http
host=example.com
--
protocol=http
host=example.com
username=alternate-value
password=alternate-value
--
alternate askpass invoked
alternate askpass invoked
EOF
)
'
HELPER="!f() {
cat >/dev/null
echo username=foo