On Wed, Nov 11, 2020 at 9:09 AM Derrick Stolee <stolee@xxxxxxxxx> wrote: > > On 11/2/2020 3:43 PM, Elijah Newren wrote: > > Elijah Newren (20): > > merge-ort: setup basic internal data structures > > merge-ort: add some high-level algorithm structure > > merge-ort: port merge_start() from merge-recursive > > merge-ort: use histogram diff > > merge-ort: add an err() function similar to one from merge-recursive > > merge-ort: implement a very basic collect_merge_info() > > merge-ort: avoid repeating fill_tree_descriptor() on the same tree > > merge-ort: compute a few more useful fields for collect_merge_info > > merge-ort: record stage and auxiliary info for every path > > merge-ort: avoid recursing into identical trees > > merge-ort: add a preliminary simple process_entries() implementation > > merge-ort: have process_entries operate in a defined order > > I got this far before my attention to detail really started slipping. > > > merge-ort: step 1 of tree writing -- record basenames, modes, and oids > > merge-ort: step 2 of tree writing -- function to create tree object > > merge-ort: step 3 of tree writing -- handling subdirectories as we go > > merge-ort: basic outline for merge_switch_to_result() > > merge-ort: add implementation of checkout() > > tree: enable cmp_cache_name_compare() to be used elsewhere > > merge-ort: add implementation of record_unmerged_index_entries() > > merge-ort: free data structures in merge_finalize() > > I'll try to take another pass on these commits tomorrow. > > For the series as a whole I'd love to see at least one test that > demonstrates that this code does something, if even only for a very > narrow case. > > There's a lot of code being moved here, and it would be nice to have > even a very simple test case that can check that we didn't leave any > important die("not implemented") calls lying around or worse accessing > an uninitialized pointer or something. We absolutely left several die("not implemented") calls lying around. The series was long enough at 20 patches; reviewers lose steam at 10 (at least both you and Jonathan have), so maybe I should have left even more in there as an attempt to split up this series more. However, if you run the testsuite with GIT_TEST_MERGE_ALGORITHM=ort, then this series drops the number of failures in the testsuite from around 2200, down to 1500. So, there's about 700 testcases for you. Also, there were several preparatory series all designed for getting the testsuite in order for this new merge algorithm. See the following currently cooking topics: * en/merge-tests topic * en/dir-rename-tests and the following topics that were previously merged: * 36d225c7d4 ("Merge branch 'en/merge-tests'", 2020-08-19) * cf372dc815 ("Merge branch 'en/test-cleanup'", 2020-03-09) * ac193e0e0a ("Merge branch 'en/merge-path-collision'", 2019-01-04) * c99033060f ("Merge branch 'en/t7405-recursive-submodule-conflicts'", 2018-08-02) * e6da45c7cd ("Merge branch 'en/t6036-merge-recursive-tests'", 2018-08-02) * 84e74c6403 ("Merge branch 'en/t6042-insane-merge-rename-testcases'", 2018-08-02) * bba1a5559c ("Merge branch 'en/t6036-recursive-corner-cases'", 2018-08-02) * 93b74a7cfa ("Merge branch 'en/merge-recursive-tests'", 2018-06-25) and maybe others I missed.