3 # Copyright (c) 2006 Eric Wong
4 test_description='git svn commit-diff clobber'
7 test_expect_success 'initialize repo' '
10 echo initial > file &&
11 svn_cmd import -m "initial" . "$svnrepo" &&
13 echo initial > file &&
14 git update-index --add file &&
15 git commit -a -m "initial"
17 test_expect_success 'commit change from svn side' '
18 svn_cmd co "$svnrepo" t.svn &&
20 echo second line from svn >> file &&
22 svn_cmd commit -m "second line from svn" &&
27 test_expect_success 'commit conflicting change from git' '
28 echo second line from git >> file &&
29 git commit -a -m "second line from git" &&
30 test_must_fail git svn commit-diff -r1 HEAD~1 HEAD "$svnrepo"
33 test_expect_success 'commit complementing change from git' '
34 git reset --hard HEAD~1 &&
35 echo second line from svn >> file &&
36 git commit -a -m "second line from svn" &&
37 echo third line from git >> file &&
38 git commit -a -m "third line from git" &&
39 git svn commit-diff -r2 HEAD~1 HEAD "$svnrepo"
42 test_expect_success 'dcommit fails to commit because of conflict' '
43 git svn init "$svnrepo" &&
45 git reset --hard refs/${remotes_git_svn} &&
46 svn_cmd co "$svnrepo" t.svn &&
48 echo fourth line from svn >> file &&
50 svn_cmd commit -m "fourth line from svn" &&
53 echo "fourth line from git" >> file &&
54 git commit -a -m "fourth line from git" &&
55 test_must_fail git svn dcommit
58 test_expect_success 'dcommit does the svn equivalent of an index merge' "
59 git reset --hard refs/${remotes_git_svn} &&
60 echo 'index merge' > file2 &&
61 git update-index --add file2 &&
62 git commit -a -m 'index merge' &&
63 echo 'more changes' >> file2 &&
64 git update-index file2 &&
65 git commit -a -m 'more changes' &&
69 test_expect_success 'commit another change from svn side' '
70 svn_cmd co "$svnrepo" t.svn &&
72 echo third line from svn >> file &&
74 svn_cmd commit -m "third line from svn" &&
79 test_expect_success 'multiple dcommit from git svn will not clobber svn' "
80 git reset --hard refs/${remotes_git_svn} &&
81 echo new file >> new-file &&
82 git update-index --add new-file &&
83 git commit -a -m 'new file' &&
84 echo clobber > file &&
85 git commit -a -m 'clobber' &&
86 test_must_fail git svn dcommit
90 test_expect_success 'check that rebase really failed' '
91 test -d .git/rebase-apply
94 test_expect_success 'resolve, continue the rebase and dcommit' "
95 echo clobber and I really mean it > file &&
96 git update-index file &&
97 git rebase --continue &&