git-svn: understand grafts when doing dcommit
[git/builtin-gsoc.git] / t / t9106-git-svn-commit-diff-clobber.sh
blob79b7968eaf4d4bfa3673edf78e31ca43b54becb3
1 #!/bin/sh
3 # Copyright (c) 2006 Eric Wong
4 test_description='git-svn commit-diff clobber'
5 . ./lib-git-svn.sh
7 test_expect_success 'initialize repo' "
8 mkdir import &&
9 cd import &&
10 echo initial > file &&
11 svn import -m 'initial' . $svnrepo &&
12 cd .. &&
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 co $svnrepo t.svn &&
19 cd t.svn &&
20 echo second line from svn >> file &&
21 poke file &&
22 svn commit -m 'second line from svn' &&
23 cd .. &&
24 rm -rf t.svn
27 test_expect_failure 'commit conflicting change from git' "
28 echo second line from git >> file &&
29 git commit -a -m 'second line from git' &&
30 git-svn commit-diff -r1 HEAD~1 HEAD $svnrepo
31 " || true
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_failure 'dcommit fails to commit because of conflict' "
43 git-svn init $svnrepo &&
44 git-svn fetch &&
45 git reset --hard refs/remotes/git-svn &&
46 svn co $svnrepo t.svn &&
47 cd t.svn &&
48 echo fourth line from svn >> file &&
49 poke file &&
50 svn commit -m 'fourth line from svn' &&
51 cd .. &&
52 rm -rf t.svn &&
53 echo 'fourth line from git' >> file &&
54 git commit -a -m 'fourth line from git' &&
55 git-svn dcommit
56 " || true
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' &&
66 git-svn dcommit
69 test_expect_success 'commit another change from svn side' "
70 svn co $svnrepo t.svn &&
71 cd t.svn &&
72 echo third line from svn >> file &&
73 poke file &&
74 svn commit -m 'third line from svn' &&
75 cd .. &&
76 rm -rf t.svn
79 test_expect_failure '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 git svn dcommit
87 " || true
90 test_expect_success 'check that rebase really failed' 'test -d .dotest'
92 test_expect_success 'resolve, continue the rebase and dcommit' "
93 echo clobber and I really mean it > file &&
94 git update-index file &&
95 git rebase --continue &&
96 git svn dcommit
99 test_done