From: Owen W. Taylor <otaylor@xxxxxxxxxxxx> A new configuration variable push.confirm sets the default behavior for whether 'git push' should show prompt the user interactively before proceeding to update refs. Signed-off-by: Owen W. Taylor <otaylor@xxxxxxxxxxxx> --- Documentation/config.txt | 4 ++++ builtin-push.c | 6 +++++- cache.h | 1 + config.c | 4 ++++ environment.c | 1 + 5 files changed, 15 insertions(+), 1 deletions(-) diff --git a/Documentation/config.txt b/Documentation/config.txt index be0b8ca..3bb632f 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -1303,6 +1303,10 @@ pull.octopus:: pull.twohead:: The default merge strategy to use when pulling a single branch. +push.confirm:: + If set to true, linkgit:git-push[1] will act as if the --confirm + option was passed, unless overriden with --no-confirm. + push.default:: Defines the action git push should take if no refspec is given on the command line, no refspec is configured in the remote, and diff --git a/builtin-push.c b/builtin-push.c index 231be5d..63a0bb0 100644 --- a/builtin-push.c +++ b/builtin-push.c @@ -66,7 +66,6 @@ static void setup_push_tracking(void) static void setup_default_push_refspecs(void) { - git_config(git_default_config, NULL); switch (push_default) { default: case PUSH_DEFAULT_MATCHING: @@ -193,6 +192,11 @@ int cmd_push(int argc, const char **argv, const char *prefix) OPT_END() }; + git_config(git_default_config, NULL); + + if (push_confirm) + flags |= TRANSPORT_PUSH_CONFIRM; + argc = parse_options(argc, argv, prefix, options, push_usage, 0); if (tags) diff --git a/cache.h b/cache.h index 1a6412d..ef8606d 100644 --- a/cache.h +++ b/cache.h @@ -558,6 +558,7 @@ enum push_default_type { extern enum branch_track git_branch_track; extern enum rebase_setup_type autorebase; extern enum push_default_type push_default; +extern int push_confirm; enum object_creation_mode { OBJECT_CREATION_USES_HARDLINKS = 0, diff --git a/config.c b/config.c index c644061..1bc8e6f 100644 --- a/config.c +++ b/config.c @@ -575,6 +575,10 @@ static int git_default_branch_config(const char *var, const char *value) static int git_default_push_config(const char *var, const char *value) { + if (!strcmp(var, "push.confirm")) { + push_confirm = git_config_bool(var, value); + return 0; + } if (!strcmp(var, "push.default")) { if (!value) return config_error_nonbool(var); diff --git a/environment.c b/environment.c index 5de6837..e1c82b9 100644 --- a/environment.c +++ b/environment.c @@ -44,6 +44,7 @@ enum safe_crlf safe_crlf = SAFE_CRLF_WARN; unsigned whitespace_rule_cfg = WS_DEFAULT_RULE; enum branch_track git_branch_track = BRANCH_TRACK_REMOTE; enum rebase_setup_type autorebase = AUTOREBASE_NEVER; +int push_confirm; enum push_default_type push_default = PUSH_DEFAULT_MATCHING; #ifndef OBJECT_CREATION_MODE #define OBJECT_CREATION_MODE OBJECT_CREATION_USES_HARDLINKS -- 1.6.2.5 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html