summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/config.txt6
-rw-r--r--cache.h1
-rw-r--r--config.c3
-rw-r--r--connect.c4
-rw-r--r--environment.c1
5 files changed, 14 insertions, 1 deletions
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;