"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 that more than 3 trees can be merged. Signed-off-by: Jean-Noel Avila <jn.avila@xxxxxxx> --- Documentation/git-read-tree.txt | 7 +++---- builtin/read-tree.c | 5 +++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt index ed9d63ef4..7e20b0c21 100644 --- a/Documentation/git-read-tree.txt +++ b/Documentation/git-read-tree.txt @@ -135,10 +135,9 @@ OPTIONS 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 -provided. +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 or more trees are provided. Single Tree Merge diff --git a/builtin/read-tree.c b/builtin/read-tree.c index 23e212ee8..383442567 100644 --- a/builtin/read-tree.c +++ b/builtin/read-tree.c @@ -226,9 +226,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; -- 2.13.0