From: Junio C Hamano Date: Tue, 30 Nov 2010 01:52:36 +0000 (-0800) Subject: Merge branch 'cb/leading-path-removal' X-Git-Tag: v1.7.4-rc0~100 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=208247adb9fc3702f87c6ec3fc26bd85d10d73e6;p=git.git Merge branch 'cb/leading-path-removal' * cb/leading-path-removal: use persistent memory for rejected paths do not overwrite files in leading path lstat_cache: optionally return match_len add function check_ok_to_remove() t7607: add leading-path tests t7607: use test-lib functions and check MERGE_HEAD Conflicts: t/t7607-merge-overwrite.sh --- 208247adb9fc3702f87c6ec3fc26bd85d10d73e6 diff --cc t/t7607-merge-overwrite.sh index 3988900fc,9137866e1..4d5ce4e68 --- a/t/t7607-merge-overwrite.sh +++ b/t/t7607-merge-overwrite.sh @@@ -84,20 -92,52 +92,68 @@@ test_expect_success 'will not overwrit test_cmp important c1.c ' + test_expect_success 'will not overwrite untracked subtree' ' + git reset --hard c0 && + rm -rf sub && + mkdir -p sub/f && + cp important sub/f/important && + test_must_fail git merge sub && + test_path_is_missing .git/MERGE_HEAD && + test_cmp important sub/f/important + ' + + cat >expect <<\EOF + error: The following untracked working tree files would be overwritten by merge: + sub + sub2 + Please move or remove them before you can merge. + EOF + + test_expect_success 'will not overwrite untracked file in leading path' ' + git reset --hard c0 && + rm -rf sub && + cp important sub && + cp important sub2 && + test_must_fail git merge sub 2>out && + test_cmp out expect && + test_path_is_missing .git/MERGE_HEAD && + test_cmp important sub && + test_cmp important sub2 && + rm -f sub sub2 + ' + + test_expect_failure SYMLINKS 'will not overwrite untracked symlink in leading path' ' + git reset --hard c0 && + rm -rf sub && + mkdir sub2 && + ln -s sub2 sub && + test_must_fail git merge sub && + test_path_is_missing .git/MERGE_HEAD + ' + + test_expect_success SYMLINKS 'will not be confused by symlink in leading path' ' + git reset --hard c0 && + rm -rf sub && + ln -s sub2 sub && + git add sub && + git commit -m ln && + git checkout sub + ' + +cat >expect <<\EOF +error: Untracked working tree file 'c0.c' would be overwritten by merge. +fatal: read-tree failed +EOF + +test_expect_success 'will not overwrite untracked file on unborn branch' ' + git reset --hard c0 && + git rm -fr . && + git checkout --orphan new && + cp important c0.c && + test_must_fail git merge c0 2>out && + test_cmp out expect && + test_path_is_missing .git/MERGE_HEAD && + test_cmp important c0.c +' + test_done