Skip to content

Commit

Permalink
Merge branch 'kf/askpass-config'
Browse files Browse the repository at this point in the history
* kf/askpass-config:
  Extend documentation of core.askpass and GIT_ASKPASS.
  Allow core.askpass to override SSH_ASKPASS.
  Add a new option 'core.askpass'.
  • Loading branch information
gitster committed Sep 8, 2010
2 parents e250c59 + 453842c commit b815a72
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 5 deletions.
9 changes: 9 additions & 0 deletions Documentation/config.txt
Expand Up @@ -450,6 +450,15 @@ 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. Can be overridden by the 'GIT_ASKPASS'
environment variable. If not set, fall back to the value of the
'SSH_ASKPASS' environment variable or, failing that, a simple password
prompt. The external program shall be given a suitable prompt as
command line argument and write the password on its STDOUT.

core.editor::
Commands such as `commit` and `tag` that lets you edit
messages by launching an editor uses the value of this
Expand Down
7 changes: 7 additions & 0 deletions Documentation/git.txt
Expand Up @@ -639,6 +639,13 @@ Usually it is easier to configure any desired options through your
personal `.ssh/config` file. Please consult your ssh documentation
for further details.

'GIT_ASKPASS'::
If this environment variable is set, then git commands which need to
acquire passwords or passphrases (e.g. for HTTP or IMAP authentication)
will call this program with a suitable prompt as command line argument
and read the password from its STDOUT. See also the 'core.askpass'
option in linkgit:git-config[1].

'GIT_FLUSH'::
If this environment variable is set to "1", then commands such
as 'git blame' (in incremental mode), 'git rev-list', 'git log',
Expand Down
1 change: 1 addition & 0 deletions cache.h
Expand Up @@ -1035,6 +1035,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 */
Expand Down
3 changes: 3 additions & 0 deletions config.c
Expand Up @@ -605,6 +605,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);

Expand Down
7 changes: 5 additions & 2 deletions connect.c
Expand Up @@ -621,13 +621,16 @@ 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 = getenv("SSH_ASKPASS");
if (!askpass || !(*askpass))
return getpass(prompt);

Expand Down
1 change: 1 addition & 0 deletions environment.c
Expand Up @@ -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;
Expand Down
3 changes: 0 additions & 3 deletions git.c
Expand Up @@ -56,9 +56,6 @@ static int handle_options(const char ***argv, int *argc, int *envchanged)
{
int handled = 0;

if (!getenv("GIT_ASKPASS") && getenv("SSH_ASKPASS"))
setenv("GIT_ASKPASS", getenv("SSH_ASKPASS"), 1);

while (*argc > 0) {
const char *cmd = (*argv)[0];
if (cmd[0] != '-')
Expand Down

0 comments on commit b815a72

Please sign in to comment.