Merge branch 'maint'
[gitweb.git] / t / t7607-merge-overwrite.sh
index d4a499dee2ec3daabdba75eb6185778567204b0b..5f731a1177267e76f19dbe1605a4d0f2e8e749bd 100755 (executable)
@@ -15,7 +15,9 @@ test_expect_success 'setup' '
        git reset --hard c0 &&
        mkdir sub &&
        echo "sub/f" > sub/f &&
-       git add sub/f &&
+       mkdir sub2 &&
+       echo "sub2/f" > sub2/f &&
+       git add sub/f sub2/f &&
        git commit -m sub &&
        git tag sub &&
        echo "VERY IMPORTANT CHANGES" > important
@@ -100,13 +102,24 @@ test_expect_success 'will not overwrite untracked subtree' '
        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 &&
-       test_must_fail git merge 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 sub &&
+       test_cmp important sub2 &&
+       rm -f sub sub2
 '
 
 test_expect_failure SYMLINKS 'will not overwrite untracked symlink in leading path' '
@@ -143,4 +156,20 @@ test_expect_success 'will not overwrite untracked file on unborn branch' '
        test_cmp important c0.c
 '
 
+test_expect_success 'set up unborn branch and content' '
+       git symbolic-ref HEAD refs/heads/unborn &&
+       rm -f .git/index &&
+       echo foo > tracked-file &&
+       git add tracked-file &&
+       echo bar > untracked-file
+'
+
+test_expect_failure 'will not clobber WT/index when merging into unborn' '
+       git merge master &&
+       grep foo tracked-file &&
+       git show :tracked-file >expect &&
+       grep foo expect &&
+       grep bar untracked-file
+'
+
 test_done