Re: What's cooking in git.git (Feb 2018, #02; Tue, 13)
On Tue, Feb 13, 2018 at 5:51 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 39 quoted lines
> * 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.