Skip to content

Commit 04c9e11

Browse files
committed
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 <[email protected]> Acked-by: Daniel Barkalow <[email protected]>
1 parent 52229a2 commit 04c9e11

File tree

1 file changed

+18
-17
lines changed

1 file changed

+18
-17
lines changed

builtin-checkout.c

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -226,24 +226,25 @@ static int merge_working_tree(struct checkout_opts *opts,
226226
refresh_cache(REFRESH_QUIET);
227227

228228
if (unmerged_cache()) {
229-
ret = opts->merge ? -1 :
230-
error("you need to resolve your current index first");
231-
} else {
232-
topts.update = 1;
233-
topts.merge = 1;
234-
topts.gently = opts->merge;
235-
topts.verbose_update = !opts->quiet;
236-
topts.fn = twoway_merge;
237-
topts.dir = xcalloc(1, sizeof(*topts.dir));
238-
topts.dir->show_ignored = 1;
239-
topts.dir->exclude_per_dir = ".gitignore";
240-
tree = parse_tree_indirect(old->commit->object.sha1);
241-
init_tree_desc(&trees[0], tree->buffer, tree->size);
242-
tree = parse_tree_indirect(new->commit->object.sha1);
243-
init_tree_desc(&trees[1], tree->buffer, tree->size);
244-
ret = unpack_trees(2, trees, &topts);
229+
error("you need to resolve your current index first");
230+
return 1;
245231
}
246-
if (ret) {
232+
233+
/* 2-way merge to the new branch */
234+
topts.update = 1;
235+
topts.merge = 1;
236+
topts.gently = opts->merge;
237+
topts.verbose_update = !opts->quiet;
238+
topts.fn = twoway_merge;
239+
topts.dir = xcalloc(1, sizeof(*topts.dir));
240+
topts.dir->show_ignored = 1;
241+
topts.dir->exclude_per_dir = ".gitignore";
242+
tree = parse_tree_indirect(old->commit->object.sha1);
243+
init_tree_desc(&trees[0], tree->buffer, tree->size);
244+
tree = parse_tree_indirect(new->commit->object.sha1);
245+
init_tree_desc(&trees[1], tree->buffer, tree->size);
246+
247+
if (unpack_trees(2, trees, &topts)) {
247248
/*
248249
* Unpack couldn't do a trivial merge; either
249250
* give up or do a real merge, depending on

0 commit comments

Comments
 (0)