As a preparation for a possible future "git push" default behaviour change, display a prominent warning for operations that may change behaviour in the future. The warning explains for the user how to configure this permanently so the warning will not be seen again after proper configuration. Signed-off-by: Finn Arne Gangstad <finnag@xxxxxxx> --- builtin-push.c | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-) diff --git a/builtin-push.c b/builtin-push.c index 5706c99..b9fe206 100644 --- a/builtin-push.c +++ b/builtin-push.c @@ -74,11 +74,34 @@ static void setup_push_current(struct remote *remote) branch->merge[n]->src)); } +static const char *warn_unconfigured_push_msg[] = { + "You did not specify any refspecs to push, and the current remote", + "has not configured any push refspecs. The default action in this", + "case has been to push all matching refspecs, that is, all branches", + "that exist both locally and remotely will be updated.", + "This default may change in the future.", + "", + "You can specify what action you want to take in this case, and", + "avoid seeing this message again, by configuring 'push.default' to:", + " 'nothing' : Do not push anythig", + " 'matching' : Push all matching branches (the current default)", + " 'current' : Push the current branch to whatever it is tracking", + "" +}; + +static void warn_unconfigured_push() +{ + int i; + for (i = 0; i < ARRAY_SIZE(warn_unconfigured_push_msg); i++) + warning("%s", warn_unconfigured_push_msg[i]); +} + static void handle_default_push(struct remote *remote, int *flags) { git_config(git_default_config, NULL); switch (push_default) { case PUSH_DEFAULT_UNSPECIFIED: + warn_unconfigured_push(); /* fallthrough */ case PUSH_DEFAULT_MATCHING: -- 1.6.2.105.g6ff1f.dirty -- 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