git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 4/8] sequencer: switch non-recursive merges over to ort

From
Elijah Newren via GitGitGadget <gitgitgadget@gmail.com>
Date
Mar 31, 2025, 15:51 UTC
Message-ID
<39ff4860fcdfd5c80181971fa2b3fdd90428a163.1743436280.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.1898.git.1743436279.gitgitgadget@gmail.com>
From: Elijah Newren <newren@gmail.com>

The do_recursive_merge() function, which is somewhat misleadingly named since its purpose in life is to do a *non*-recursive merge, had code to allow either using the recursive or ort backends. The default has been ort for a very long time, let's just remove the code path for allowing the recursive backend to be selected.

Signed-off-by: Elijah Newren <newren@gmail.com>
---
 sequencer.c | 35 +++++++++++++----------------------
 1 file changed, 13 insertions(+), 22 deletions(-)
diff --git a/sequencer.c b/sequencer.c
index ad0ab75c8d4..b5d91fd3515 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -781,28 +781,19 @@ static int do_recursive_merge(struct repository *r,
 	for (i = 0; i < opts->xopts.nr; i++)
 		parse_merge_opt(&o, opts->xopts.v[i]);
 
-	if (!opts->strategy || !strcmp(opts->strategy, "ort")) {
-		memset(&result, 0, sizeof(result));
-		merge_incore_nonrecursive(&o, base_tree, head_tree, next_tree,
-					    &result);
-		show_output = !is_rebase_i(opts) || !result.clean;
-		/*
-		 * TODO: merge_switch_to_result will update index/working tree;
-		 * we only really want to do that if !result.clean || this is
-		 * the final patch to be picked.  But determining this is the
-		 * final patch would take some work, and "head_tree" would need
-		 * to be replace with the tree the index matched before we
-		 * started doing any picks.
-		 */
-		merge_switch_to_result(&o, head_tree, &result, 1, show_output);
-		clean = result.clean;
-	} else {
-		ensure_full_index(r->index);
-		clean = merge_trees(&o, head_tree, next_tree, base_tree);
-		if (is_rebase_i(opts) && clean <= 0)
-			fputs(o.obuf.buf, stdout);
-		strbuf_release(&o.obuf);
-	}
+	memset(&result, 0, sizeof(result));
+	merge_incore_nonrecursive(&o, base_tree, head_tree, next_tree, &result);
+	show_output = !is_rebase_i(opts) || !result.clean;
+	/*
+	 * TODO: merge_switch_to_result will update index/working tree;
+	 * we only really want to do that if !result.clean || this is
+	 * the final patch to be picked.  But determining this is the
+	 * final patch would take some work, and "head_tree" would need
+	 * to be replace with the tree the index matched before we
+	 * started doing any picks.
+	 */
+	merge_switch_to_result(&o, head_tree, &result, 1, show_output);
+	clean = result.clean;
 	if (clean < 0) {
 		rollback_lock_file(&index_lock);
 		return clean;
-- 
gitgitgadget
Previous: Elijah Newren via GitGitGadgetNext: Elijah Newren via GitGitGadget
Message 5 of 31 in “Debug merge-recursive.[ch]”
  1. 0/8 Debug merge-recursive.[ch]Elijah Newren via GitGitGadget, Mar 31, 2025
  2. 1/8 checkout: replace merge_trees() with merge_ort_nonrecursive()Elijah Newren via GitGitGadget, Mar 31, 2025
  3. 2/8 builtin/merge-recursive: switch to using merge_ort_generic()Elijah Newren via GitGitGadget, Mar 31, 2025
  4. 3/8 merge-ort: enable diff-algorithms other than histogramElijah Newren via GitGitGadget, Mar 31, 2025
  5. 4/8 sequencer: switch non-recursive merges over to ortElijah Newren via GitGitGadget, Mar 31, 2025
  6. 5/8 merge, sequencer: switch recursive merges over to ortElijah Newren via GitGitGadget, Mar 31, 2025
  7. 7/8 tests: remove GIT_TEST_MERGE_ALGORITHM and test_expect_merge_algorithmElijah Newren via GitGitGadget, Mar 31, 2025
  8. Eric SunshineMar 31, 2025
  9. Elijah NewrenMar 31, 2025
  10. 6/8 merge-recursive.[ch]: thoroughly debug theseElijah Newren via GitGitGadget, Mar 31, 2025
  11. 8/8 builtin/{merge,rebase,revert}: remove GIT_TEST_MERGE_ALGORITHMElijah Newren via GitGitGadget, Mar 31, 2025
  12. 0/8 Debug merge-recursive.[ch]Elijah Newren via GitGitGadget, Apr 5, 2025
  13. 1/8 checkout: replace merge_trees() with merge_ort_nonrecursive()Elijah Newren via GitGitGadget, Apr 5, 2025
  14. 2/8 builtin/merge-recursive: switch to using merge_ort_generic()Elijah Newren via GitGitGadget, Apr 5, 2025
  15. 3/8 merge-ort: enable diff-algorithms other than histogramElijah Newren via GitGitGadget, Apr 5, 2025
  16. 4/8 sequencer: switch non-recursive merges over to ortElijah Newren via GitGitGadget, Apr 5, 2025
  17. 5/8 merge, sequencer: switch recursive merges over to ortElijah Newren via GitGitGadget, Apr 5, 2025
  18. 8/8 builtin/{merge,rebase,revert}: remove GIT_TEST_MERGE_ALGORITHMElijah Newren via GitGitGadget, Apr 5, 2025
  19. 7/8 tests: remove GIT_TEST_MERGE_ALGORITHM and test_expect_merge_algorithmElijah Newren via GitGitGadget, Apr 5, 2025
  20. 6/8 merge-recursive.[ch]: thoroughly debug theseElijah Newren via GitGitGadget, Apr 5, 2025
  21. Junio C HamanoApr 7, 2025
  22. Elijah NewrenApr 7, 2025
  23. 0/8 Debug merge-recursive.[ch]Elijah Newren via GitGitGadget, Apr 8, 2025
  24. 1/8 checkout: replace merge_trees() with merge_ort_nonrecursive()Elijah Newren via GitGitGadget, Apr 8, 2025
  25. 2/8 builtin/merge-recursive: switch to using merge_ort_generic()Elijah Newren via GitGitGadget, Apr 8, 2025
  26. 3/8 merge-ort: enable diff-algorithms other than histogramElijah Newren via GitGitGadget, Apr 8, 2025
  27. 4/8 sequencer: switch non-recursive merges over to ortElijah Newren via GitGitGadget, Apr 8, 2025
  28. 5/8 merge, sequencer: switch recursive merges over to ortElijah Newren via GitGitGadget, Apr 8, 2025
  29. 8/8 builtin/{merge,rebase,revert}: remove GIT_TEST_MERGE_ALGORITHMElijah Newren via GitGitGadget, Apr 8, 2025
  30. 7/8 tests: remove GIT_TEST_MERGE_ALGORITHM and test_expect_merge_algorithmElijah Newren via GitGitGadget, Apr 8, 2025
  31. 6/8 merge-recursive.[ch]: thoroughly debug theseElijah Newren via GitGitGadget, Apr 8, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.