From d3e7da8979f6ee3edd88fe53241095921d578285 Mon Sep 17 00:00:00 2001 From: Anselm Kruis Date: Mon, 30 Aug 2010 15:38:38 +0200 Subject: [PATCH] Add a new option 'core.askpass'. Setting this option has the same effect as setting the environment variable 'GIT_ASKPASS'. Signed-off-by: Knut Franke Signed-off-by: Junio C Hamano --- Documentation/config.txt | 6 ++++++ cache.h | 1 + config.c | 3 +++ connect.c | 4 +++- environment.c | 1 + 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Documentation/config.txt b/Documentation/config.txt index e75434b3ef..b9ab7dfa01 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -450,6 +450,12 @@ core.excludesfile:: to the value of `$HOME` and "{tilde}user/" to the specified user's home directory. See linkgit:gitignore[5]. +core.askpass:: + Some commands (e.g. svn and http interfaces) that interactively + ask for a password can be told to use an external program given + via the value of this variable when it is set, and the + environment variable `GIT_ASKPASS` is not set. + core.editor:: Commands such as `commit` and `tag` that lets you edit messages by launching an editor uses the value of this diff --git a/cache.h b/cache.h index c9fa3df7f5..c74275727e 100644 --- a/cache.h +++ b/cache.h @@ -1029,6 +1029,7 @@ extern int pager_in_use(void); extern int pager_use_color; extern const char *editor_program; +extern const char *askpass_program; extern const char *excludes_file; /* base85 */ diff --git a/config.c b/config.c index cdcf5836c6..ac55730fa7 100644 --- a/config.c +++ b/config.c @@ -560,6 +560,9 @@ static int git_default_core_config(const char *var, const char *value) if (!strcmp(var, "core.editor")) return git_config_string(&editor_program, var, value); + if (!strcmp(var, "core.askpass")) + return git_config_string(&askpass_program, var, value); + if (!strcmp(var, "core.excludesfile")) return git_config_pathname(&excludes_file, var, value); diff --git a/connect.c b/connect.c index 02e738a014..e296bfca18 100644 --- a/connect.c +++ b/connect.c @@ -621,12 +621,14 @@ int finish_connect(struct child_process *conn) char *git_getpass(const char *prompt) { - char *askpass; + const char *askpass; struct child_process pass; const char *args[3]; static struct strbuf buffer = STRBUF_INIT; askpass = getenv("GIT_ASKPASS"); + if (!askpass) + askpass = askpass_program; if (!askpass || !(*askpass)) return getpass(prompt); diff --git a/environment.c b/environment.c index 83d38d3c23..e7760d8198 100644 --- a/environment.c +++ b/environment.c @@ -37,6 +37,7 @@ size_t delta_base_cache_limit = 16 * 1024 * 1024; const char *pager_program; int pager_use_color = 1; const char *editor_program; +const char *askpass_program; const char *excludes_file; enum auto_crlf auto_crlf = AUTO_CRLF_FALSE; int read_replace_refs = 1;