[PATCH v3 00/33] Add directory rename detection to git
- From
Elijah Newren <newren@gmail.com>
- Date
- Nov 21, 2017, 08:00 UTC
- Message-ID
- <20171121080059.32304-1-newren@gmail.com>
This patchset introduces directory rename detection to merge-recursive; I'm resubmitting just a few hours after my PATCHv2 because I didn't know about the DEVELOPER=1 flag previously, and my code had a number of warnings/errors. I would have just submitted fixup/squash patches, but when I checked, there sadly they cause merge conflicts when rebasing
See https://public-inbox.org/git/20171110190550.27059-1-newren@gmail.com/ for the first series, design considerations, etc, and https://public-inbox.org/git/20171120220209.15111-1-newren@gmail.com/ for v2.
Changes since the last series: * Fixed various compilation errors with make DEVELOPER=1.
Elijah Newren (33):
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: 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 filemerge-recursive.c | 1243 +++++++++++- merge-recursive.h | 17 + t/t3501-revert-cherry-pick.sh | 5 +- t/t6043-merge-rename-directories.sh | 3821 +++++++++++++++++++++++++++++++++++ t/t7607-merge-overwrite.sh | 7 +- unpack-trees.c | 4 +- unpack-trees.h | 4 + 7 files changed, 4985 insertions(+), 116 deletions(-) create mode 100755 t/t6043-merge-rename-directories.sh
-- 2.15.0.309.g62ce55426d