From 8119214f4e7036cef01a8e13f161ec510b3ff710 Mon Sep 17 00:00:00 2001 From: Elijah Newren Date: Wed, 16 Dec 2020 22:28:02 +0000 Subject: merge-ort: implement merge_incore_recursive() Implement merge_incore_recursive(), mostly through the use of a new helper function, merge_ort_internal(), which itself is based off merge_recursive_internal() from merge-recursive.c. This drops the number of failures in the testsuite when run under GIT_TEST_MERGE_ALGORITHM=ort from around 1500 to 647. Signed-off-by: Elijah Newren Signed-off-by: Junio C Hamano --- merge-ort.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'merge-ort.h') diff --git a/merge-ort.h b/merge-ort.h index 55ae7ee865..d53a0a339f 100644 --- a/merge-ort.h +++ b/merge-ort.h @@ -34,6 +34,16 @@ struct merge_result { /* * rename-detecting three-way merge with recursive ancestor consolidation. * working tree and index are untouched. + * + * merge_bases will be consumed (emptied) so make a copy if you need it. + * + * NOTE: empirically, the recursive algorithm will perform better if you + * pass the merge_bases in the order of oldest commit to the + * newest[1][2]. + * + * [1] https://lore.kernel.org/git/nycvar.QRO.7.76.6.1907252055500.21907@tvgsbejvaqbjf.bet/ + * [2] commit 8918b0c9c2 ("merge-recur: try to merge older merge bases + * first", 2006-08-09) */ void merge_incore_recursive(struct merge_options *opt, struct commit_list *merge_bases, -- cgit v1.2.3