From: Junio C Hamano Date: Thu, 7 Jan 2010 07:51:47 +0000 (-0800) Subject: checkout -m: do not try to fall back to --merge from an unborn branch X-Git-Tag: v1.6.5.8~5^2^2^2^2^2~3 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=64da3ae5c188b2b09bc1ed1eedca7e84c1aff940;p=git.git checkout -m: do not try to fall back to --merge from an unborn branch If switching from an unborn branch (= empty tree) to a valid commit failed without -m, it would fail with -m option as well. Signed-off-by: Junio C Hamano --- diff --git a/builtin-checkout.c b/builtin-checkout.c index c107fd643..b76cd2277 100644 --- a/builtin-checkout.c +++ b/builtin-checkout.c @@ -272,7 +272,7 @@ static int merge_working_tree(struct checkout_opts *opts, topts.initial_checkout = is_cache_unborn(); topts.update = 1; topts.merge = 1; - topts.gently = opts->merge; + topts.gently = opts->merge && old->commit; topts.verbose_update = !opts->quiet; topts.fn = twoway_merge; topts.dir = xcalloc(1, sizeof(*topts.dir)); @@ -294,7 +294,13 @@ static int merge_working_tree(struct checkout_opts *opts, struct tree *work; if (!opts->merge) return 1; - parse_commit(old->commit); + + /* + * Without old->commit, the below is the same as + * the two-tree unpack we already tried and failed. + */ + if (!old->commit) + return 1; /* Do more real merge */