expose a helper function peel_to_type().
[gitweb.git] / t / t9106-git-svn-commit-diff-clobber.sh
index 59b6425ce4e5a265443311b7ed033fe6e8e73add..f74ab1269e3fa79a34aa9f9a3a64df08728e6354 100755 (executable)
@@ -18,16 +18,17 @@ test_expect_success 'commit change from svn side' "
        svn co $svnrepo t.svn &&
        cd t.svn &&
        echo second line from svn >> file &&
+       poke file &&
        svn commit -m 'second line from svn' &&
        cd .. &&
        rm -rf t.svn
        "
 
-test_expect_failure 'commit conflicting change from git' "
+test_expect_success 'commit conflicting change from git' "
        echo second line from git >> file &&
        git commit -a -m 'second line from git' &&
-       git-svn commit-diff -r1 HEAD~1 HEAD $svnrepo
-       " || true
+       git-svn commit-diff -r1 HEAD~1 HEAD $svnrepo
+"
 
 test_expect_success 'commit complementing change from git' "
        git reset --hard HEAD~1 &&
@@ -38,20 +39,21 @@ test_expect_success 'commit complementing change from git' "
        git-svn commit-diff -r2 HEAD~1 HEAD $svnrepo
        "
 
-test_expect_failure 'dcommit fails to commit because of conflict' "
+test_expect_success 'dcommit fails to commit because of conflict' "
        git-svn init $svnrepo &&
        git-svn fetch &&
        git reset --hard refs/remotes/git-svn &&
        svn co $svnrepo t.svn &&
        cd t.svn &&
        echo fourth line from svn >> file &&
+       poke file &&
        svn commit -m 'fourth line from svn' &&
        cd .. &&
        rm -rf t.svn &&
        echo 'fourth line from git' >> file &&
        git commit -a -m 'fourth line from git' &&
-       git-svn dcommit
-       " || true
+       git-svn dcommit
+       "
 
 test_expect_success 'dcommit does the svn equivalent of an index merge' "
        git reset --hard refs/remotes/git-svn &&
@@ -64,4 +66,34 @@ test_expect_success 'dcommit does the svn equivalent of an index merge' "
        git-svn dcommit
        "
 
+test_expect_success 'commit another change from svn side' "
+       svn co $svnrepo t.svn &&
+       cd t.svn &&
+               echo third line from svn >> file &&
+               poke file &&
+               svn commit -m 'third line from svn' &&
+       cd .. &&
+       rm -rf t.svn
+       "
+
+test_expect_success 'multiple dcommit from git-svn will not clobber svn' "
+       git reset --hard refs/remotes/git-svn &&
+       echo new file >> new-file &&
+       git update-index --add new-file &&
+       git commit -a -m 'new file' &&
+       echo clobber > file &&
+       git commit -a -m 'clobber' &&
+       ! git svn dcommit
+       "
+
+
+test_expect_success 'check that rebase really failed' 'test -d .dotest'
+
+test_expect_success 'resolve, continue the rebase and dcommit' "
+       echo clobber and I really mean it > file &&
+       git update-index file &&
+       git rebase --continue &&
+       git svn dcommit
+       "
+
 test_done