Re: What's cooking in git.git (Apr 2018, #02; Tue, 17)
From: Elijah Newren <hidden>
Date: 2018-04-18 19:39:23
On Mon, Apr 16, 2018 at 11:07 PM, Junio C Hamano [off-list ref] wrote:
* en/rename-directory-detection-reboot (2018-04-16) 32 commits - merge-recursive: fix check for skipability of working tree updates - merge-recursive: Fix was_tracked() to quit lying with some renamed paths - t6046: testcases checking whether updates can be skipped in a merge - merge-recursive: improve output precision around skipping updates - merge-recursive: avoid spurious rename/rename conflict from dir renames - directory rename detection: new testcases showcasing a pair of bugs - merge-recursive: fix remaining directory rename + dirty overwrite cases - merge-recursive: fix overwriting dirty files involved in renames - merge-recursive: avoid clobbering untracked files with directory renames - merge-recursive: apply necessary modifications for directory renames - merge-recursive: when comparing files, don't include trees - merge-recursive: check for file level conflicts then get new name - merge-recursive: add computation of collisions due to dir rename & merging - merge-recursive: check for directory level conflicts - merge-recursive: add get_directory_renames() - merge-recursive: make a helper function for cleanup for handle_renames - merge-recursive: split out code for determining diff_filepairs - merge-recursive: make !o->detect_rename codepath more obvious - merge-recursive: fix leaks of allocated renames and diff_filepairs - merge-recursive: introduce new functions to handle rename logic - merge-recursive: move the get_renames() function - directory rename detection: tests for handling overwriting dirty files - directory rename detection: tests for handling overwriting untracked files - directory rename detection: miscellaneous testcases to complete coverage - directory rename detection: testcases exploring possibly suboptimal merges - directory rename detection: more involved edge/corner testcases - directory rename detection: testcases checking which side did the rename - directory rename detection: files/directories in the way of some renames - directory rename detection: partially renamed directory testcase/discussion - directory rename detection: testcases to avoid taking detection too far - directory rename detection: directory splitting testcases - directory rename detection: basic testcases Reboot of an attempt to detect wholesale directory renames and use it while merging.
Thanks for rebasing/cherry-picking the series and applying my newest changes. It looks like a couple of your squashed fixes in the rebase of the old commits (designed to deal with compilation errors from the tree entry functions having been converted to object_id) went into the wrong commits, breaking bisectability. When I send out my next round, I'll only replace the top four commits, but I'll add in a few commits that can be squashed to fix the bisectability. Also, the newest patches can still be fooled by a specially crafted rename/add conflict, but I believe with a small restructure I can both simplify the code and cover all the cases.