Re: What's cooking in git.git (Feb 2018, #02; Tue, 13)
From: Elijah Newren <hidden>
Date: 2018-02-14 19:07:09
On Tue, Feb 13, 2018 at 5:51 PM, Junio C Hamano [off-list ref] wrote:
* en/rename-directory-detection (2018-01-31) 31 commits - merge-recursive: ensure we write updates for directory-renamed file - 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: add a new hashmap for storing file collisions - 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: add a new hashmap for storing directory 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 (this branch uses en/merge-recursive-fixes.) Rename detection logic in "diff" family that is used in "merge" has learned to guess when all of x/a, x/b and x/c have moved to z/a, z/b and z/c, it is likely that x/d added in the meantime would also want to move to z/d by taking the hint that the entire directory 'x' moved to 'z'.
When you write release notes for this series, you may want to consider also calling out one or more of the bugs that were fixed as a side effect: * a bug causing dirty files involved in a rename to be overwritten during merge * a few memory leaks I added a reminder about these two fixes in the cover letter for my latest (and possibly last?) roll of the series that I just sent out.