checkout: error out when index is unmerged even with -m
Even when -m is given to allow fallilng back to 3-way merge while switching branches, we should refuse if the original index is unmerged. Signed-off-by: Junio C Hamano <gitster@pobox.com> Acked-by: Daniel Barkalow <barkalow@iabervon.org>
This commit is contained in:
parent
52229a29c7
commit
04c9e11f2c
@ -226,24 +226,25 @@ static int merge_working_tree(struct checkout_opts *opts,
|
|||||||
refresh_cache(REFRESH_QUIET);
|
refresh_cache(REFRESH_QUIET);
|
||||||
|
|
||||||
if (unmerged_cache()) {
|
if (unmerged_cache()) {
|
||||||
ret = opts->merge ? -1 :
|
error("you need to resolve your current index first");
|
||||||
error("you need to resolve your current index first");
|
return 1;
|
||||||
} else {
|
|
||||||
topts.update = 1;
|
|
||||||
topts.merge = 1;
|
|
||||||
topts.gently = opts->merge;
|
|
||||||
topts.verbose_update = !opts->quiet;
|
|
||||||
topts.fn = twoway_merge;
|
|
||||||
topts.dir = xcalloc(1, sizeof(*topts.dir));
|
|
||||||
topts.dir->show_ignored = 1;
|
|
||||||
topts.dir->exclude_per_dir = ".gitignore";
|
|
||||||
tree = parse_tree_indirect(old->commit->object.sha1);
|
|
||||||
init_tree_desc(&trees[0], tree->buffer, tree->size);
|
|
||||||
tree = parse_tree_indirect(new->commit->object.sha1);
|
|
||||||
init_tree_desc(&trees[1], tree->buffer, tree->size);
|
|
||||||
ret = unpack_trees(2, trees, &topts);
|
|
||||||
}
|
}
|
||||||
if (ret) {
|
|
||||||
|
/* 2-way merge to the new branch */
|
||||||
|
topts.update = 1;
|
||||||
|
topts.merge = 1;
|
||||||
|
topts.gently = opts->merge;
|
||||||
|
topts.verbose_update = !opts->quiet;
|
||||||
|
topts.fn = twoway_merge;
|
||||||
|
topts.dir = xcalloc(1, sizeof(*topts.dir));
|
||||||
|
topts.dir->show_ignored = 1;
|
||||||
|
topts.dir->exclude_per_dir = ".gitignore";
|
||||||
|
tree = parse_tree_indirect(old->commit->object.sha1);
|
||||||
|
init_tree_desc(&trees[0], tree->buffer, tree->size);
|
||||||
|
tree = parse_tree_indirect(new->commit->object.sha1);
|
||||||
|
init_tree_desc(&trees[1], tree->buffer, tree->size);
|
||||||
|
|
||||||
|
if (unpack_trees(2, trees, &topts)) {
|
||||||
/*
|
/*
|
||||||
* Unpack couldn't do a trivial merge; either
|
* Unpack couldn't do a trivial merge; either
|
||||||
* give up or do a real merge, depending on
|
* give up or do a real merge, depending on
|
||||||
|
Loading…
Reference in New Issue
Block a user