зеркало из https://github.com/microsoft/git.git
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
This commit is contained in:
Коммит
dd0bc5b531
|
@ -892,6 +892,7 @@ static int finish_automerge(struct commit *head,
|
|||
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 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
|
|||
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 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
|
|||
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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Загрузка…
Ссылка в новой задаче