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. Thanks, -Stolee