read-tree -m: make error message for merging 0 trees less smart aleck

"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>

Jean-Noel Avila committed May 11, 2017 at 14:06 UTC 9932242f597b2990117430546e411793090e22e2
2 files changed +4 -3
Documentation/git-read-tree.txt
+1 -1
@@ -131,7 +131,7 @@ Merging
131 -------
132 If `-m` is specified, 'git read-tree' can perform 3 kinds of
133 merge, a single tree merge if only 1 tree is given, a
134 -fast-forward merge with 2 trees, or a 3-way merge if 3 trees are
134 +fast-forward merge with 2 trees, or a 3-way merge if 3 or more trees are
135 provided.
136
137
builtin/read-tree.c
+3 -2
@@ -197,9 +197,10 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
197 setup_work_tree();
198
199 if (opts.merge) {
200 - if (stage < 2)
201 - die("just how do you expect me to merge %d trees?", stage-1);
200 switch (stage - 1) {
201 + case 0:
202 + die("you must specify at least one tree to merge");
203 + break;
204 case 1:
205 opts.fn = opts.prefix ? bind_merge : oneway_merge;
206 break;