Show error for 'git merge' with unset merge.defaultToUpstream
authorVincent van Ravesteijn <vfr@lyx.org>
Mon, 21 Nov 2011 13:30:40 +0000 (14:30 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 21 Nov 2011 17:29:06 +0000 (09:29 -0800)
'git merge' can be called without any arguments if merge.defaultToUpstream
is set. However, when merge.defaultToUpstream is not set, the user will be
presented the usage information as if he entered a command with a wrong
syntaxis. Ironically, the usage information confirms that no arguments are
mandatory.

This adds a proper error message telling the user why the command failed. As
a side-effect this can help the user in discovering the possibility to merge
with the upstream branch by setting merge.defaultToUpstream.

Signed-off-by: Vincent van Ravesteijn <vfr@lyx.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/merge.c

index 581f494aee01f97bb87a94dbfd1fba4d14afaa69..c44251c1fd3e4a838558b0bf0b3b7aa1b6aa4b14 100644 (file)
@@ -1094,9 +1094,12 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
                die(_("You cannot combine --no-ff with --ff-only."));
 
        if (!abort_current_merge) {
-               if (!argc && default_to_upstream)
-                       argc = setup_with_upstream(&argv);
-               else if (argc == 1 && !strcmp(argv[0], "-"))
+               if (!argc) {
+                       if (default_to_upstream)
+                               argc = setup_with_upstream(&argv);
+                       else
+                               die(_("No commit specified and merge.defaultToUpstream not set."));
+               } else if (argc == 1 && !strcmp(argv[0], "-"))
                        argv[0] = "@{-1}";
        }
        if (!argc)