read-tree -m: make error message for merging 0 trees less smart aleck
authorJean-Noel Avila <jn.avila@free.fr>
Thu, 11 May 2017 12:06:33 +0000 (14:06 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 12 May 2017 06:23:39 +0000 (15:23 +0900)
"git read-tree -m" requires a tree argument to name the tree to be
merged in. Git uses a cutesy error message to say so and why:

$ git read-tree -m
warning: read-tree: emptying the index with no arguments is
deprecated; use --empty
fatal: just how do you expect me to merge 0 trees?
$ git read-tree -m --empty
fatal: just how do you expect me to merge 0 trees?

When lucky, that could produce an ah-hah moment for the user, but it's
more likely to irritate and distract them.

Instead, tell the user plainly that the tree argument is
required. Also document this requirement in the git-read-tree(1)
manpage where there is room to explain it in a more straightforward way.

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-read-tree.txt
builtin/read-tree.c
index fa1d557e5b98eb6dc40e3baa65964138b4cc0621..6bb725bffb3be59b65d9513e720efc9ee7f866d5 100644 (file)
@@ -131,7 +131,7 @@ Merging
 -------
 If `-m` is specified, 'git read-tree' can perform 3 kinds of
 merge, a single tree merge if only 1 tree is given, a
-fast-forward merge with 2 trees, or a 3-way merge if 3 trees are
+fast-forward merge with 2 trees, or a 3-way merge if 3 or more trees are
 provided.
 
 
index 8ba64bc785670590897638c8e58172c74556189d..8eae1e88e86895fd8578a6e0cb39b4e8eba9a131 100644 (file)
@@ -197,9 +197,10 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
                setup_work_tree();
 
        if (opts.merge) {
-               if (stage < 2)
-                       die("just how do you expect me to merge %d trees?", stage-1);
                switch (stage - 1) {
+               case 0:
+                       die("you must specify at least one tree to merge");
+                       break;
                case 1:
                        opts.fn = opts.prefix ? bind_merge : oneway_merge;
                        break;