summaryrefslogtreecommitdiff
path: root/prompt.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2014-12-04 03:52:29 (GMT)
committerJunio C Hamano <gitster@pobox.com>2014-12-04 18:22:42 (GMT)
commite652c0eb5d772076f92245c7e076bf6aaf6af223 (patch)
tree2ba5c9483f0d1f1f45a35bb038b02d9e0e5c1590 /prompt.c
parent59b386526a6cdd0289cdf35dd8038ae1bdfd630f (diff)
downloadgit-e652c0eb5d772076f92245c7e076bf6aaf6af223.zip
git-e652c0eb5d772076f92245c7e076bf6aaf6af223.tar.gz
git-e652c0eb5d772076f92245c7e076bf6aaf6af223.tar.bz2
prompt: respect GIT_TERMINAL_PROMPT to disable terminal prompts
If you run git as part of an automated system, you might prefer git to die rather than try to issue a prompt on the terminal (because there would be nobody to see it and respond, and the process would hang forever). This usually works out of the box because getpass() (and our more featureful replacements) will fail when there is no tty, but this does not cover all cases. For example, a batch system run via ssh might have a tty, even when the user does not expect it. Let's provide an environment variable the user can set to avoid even trying to touch the tty at all. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'prompt.c')
-rw-r--r--prompt.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/prompt.c b/prompt.c
index d7bb17c..35ddbfa 100644
--- a/prompt.c
+++ b/prompt.c
@@ -58,11 +58,19 @@ char *git_prompt(const char *prompt, int flags)
r = do_askpass(askpass, prompt);
}
- if (!r)
- r = git_terminal_prompt(prompt, flags & PROMPT_ECHO);
if (!r) {
- /* prompts already contain ": " at the end */
- die("could not read %s%s", prompt, strerror(errno));
+ const char *err;
+
+ if (git_env_bool("GIT_TERMINAL_PROMPT", 1)) {
+ r = git_terminal_prompt(prompt, flags & PROMPT_ECHO);
+ err = strerror(errno);
+ } else {
+ err = "terminal prompts disabled";
+ }
+ if (!r) {
+ /* prompts already contain ": " at the end */
+ die("could not read %s%s", prompt, err);
+ }
}
return r;
}