From: Junio C Hamano Date: Fri, 19 Jul 2019 18:30:23 +0000 (-0700) Subject: Merge branch 'ea/merge-code-cleanup' X-Git-Tag: v2.23.0-rc0~28 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/dd0bc5b531f47e54d499e944db5276505319eaef?ds=inline;hp=-c Merge branch 'ea/merge-code-cleanup' A loop has been rewritten for conciseness and clarity. * ea/merge-code-cleanup: builtin/merge.c - cleanup of code in for-cycle that tests strategies --- dd0bc5b531f47e54d499e944db5276505319eaef diff --combined builtin/merge.c index aad5a9504c,e7aeedc77d..e2ccbc44e2 --- a/builtin/merge.c +++ b/builtin/merge.c @@@ -453,7 -453,7 +453,7 @@@ static void finish(struct commit *head_ * We ignore errors in 'gc --auto', since the * user should see them. */ - close_all_packs(the_repository->objects); + close_object_store(the_repository->objects); run_command_v_opt(argv_gc_auto, RUN_GIT_CMD); } } @@@ -892,6 -892,7 +892,7 @@@ static int finish_automerge(struct comm struct strbuf buf = STRBUF_INIT; struct object_id result_commit; + write_tree_trivial(result_tree); free_commit_list(common); parents = remoteheads; if (!head_subsumed || fast_forward == FF_NO) @@@ -1586,8 -1587,8 +1587,8 @@@ int cmd_merge(int argc, const char **ar save_state(&stash)) oidclr(&stash); - for (i = 0; i < use_strategies_nr; i++) { - int ret; + for (i = 0; !merge_was_ok && i < use_strategies_nr; i++) { + int ret, cnt; if (i) { printf(_("Rewinding the tree to pristine...\n")); restore_state(&head_commit->object.oid, &stash); @@@ -1604,40 -1605,26 +1605,26 @@@ ret = try_merge_strategy(use_strategies[i]->name, common, remoteheads, head_commit); - if (!option_commit && !ret) { - merge_was_ok = 1; - /* - * This is necessary here just to avoid writing - * the tree, but later we will *not* exit with - * status code 1 because merge_was_ok is set. - */ - ret = 1; - } - - if (ret) { - /* - * The backend exits with 1 when conflicts are - * left to be resolved, with 2 when it does not - * handle the given merge at all. - */ - if (ret == 1) { - int cnt = evaluate_result(); - - if (best_cnt <= 0 || cnt <= best_cnt) { - best_strategy = use_strategies[i]->name; - best_cnt = cnt; + /* + * The backend exits with 1 when conflicts are + * left to be resolved, with 2 when it does not + * handle the given merge at all. + */ + if (ret < 2) { + if (!ret) { + if (option_commit) { + /* Automerge succeeded. */ + automerge_was_ok = 1; + break; } + merge_was_ok = 1; + } + cnt = evaluate_result(); + if (best_cnt <= 0 || cnt <= best_cnt) { + best_strategy = use_strategies[i]->name; + best_cnt = cnt; } - if (merge_was_ok) - break; - else - continue; } - - /* Automerge succeeded. */ - write_tree_trivial(&result_tree); - automerge_was_ok = 1; - break; } /*