This patchset introduces directory rename detection to merge-recursive. See
https://public-inbox.org/git/[email protected]/
for the first series (including design considerations, etc.), and follow-up
series can be found at
https://public-inbox.org/git/[email protected]/
https://public-inbox.org/git/[email protected]/
https://public-inbox.org/git/[email protected]/
Changes since v4:
* Squashed Junio's GETTEXT_POISON fixes into the appropriate commits
Elijah Newren (34):
Tighten and correct a few testcases for merging and cherry-picking
merge-recursive: fix logic ordering issue
merge-recursive: add explanation for src_entry and dst_entry
directory rename detection: basic testcases
directory rename detection: directory splitting testcases
directory rename detection: testcases to avoid taking detection too
far
directory rename detection: partially renamed directory
testcase/discussion
directory rename detection: files/directories in the way of some
renames
directory rename detection: testcases checking which side did the
rename
directory rename detection: more involved edge/corner testcases
directory rename detection: testcases exploring possibly suboptimal
merges
directory rename detection: miscellaneous testcases to complete
coverage
directory rename detection: tests for handling overwriting untracked
files
directory rename detection: tests for handling overwriting dirty files
merge-recursive: move the get_renames() function
merge-recursive: introduce new functions to handle rename logic
merge-recursive: fix leaks of allocated renames and diff_filepairs
merge-recursive: make !o->detect_rename codepath more obvious
merge-recursive: split out code for determining diff_filepairs
merge-recursive: add a new hashmap for storing directory renames
merge-recursive: make a helper function for cleanup for handle_renames
merge-recursive: add get_directory_renames()
merge-recursive: check for directory level conflicts
merge-recursive: add a new hashmap for storing file collisions
merge-recursive: add computation of collisions due to dir rename &
merging
merge-recursive: check for file level conflicts then get new name
merge-recursive: when comparing files, don't include trees
merge-recursive: apply necessary modifications for directory renames
merge-recursive: avoid clobbering untracked files with directory
renames
merge-recursive: fix overwriting dirty files involved in renames
merge-recursive: fix remaining directory rename + dirty overwrite
cases
directory rename detection: new testcases showcasing a pair of bugs
merge-recursive: avoid spurious rename/rename conflict from dir
renames
merge-recursive: ensure we write updates for directory-renamed file
merge-recursive.c | 1231 ++++++++++-
merge-recursive.h | 17 +
strbuf.c | 16 +
strbuf.h | 16 +
t/t3501-revert-cherry-pick.sh | 5 +-
t/t6043-merge-rename-directories.sh | 3823 +++++++++++++++++++++++++++++++++++
t/t7607-merge-overwrite.sh | 7 +-
unpack-trees.c | 4 +-
unpack-trees.h | 4 +
9 files changed, 5007 insertions(+), 116 deletions(-)
create mode 100755 t/t6043-merge-rename-directories.sh
--
2.15.0.408.g8e199d483