Merge branch 'jk/alternate-ref-optim' into maint
[git] / t / t9133-git-svn-nested-git-repo.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2009 Eric Wong
4 #
5
6 test_description='git svn property tests'
7 . ./lib-git-svn.sh
8
9 test_expect_success 'setup repo with a git repo inside it' '
10         svn_cmd co "$svnrepo" s &&
11         (
12                 cd s &&
13                 git init &&
14                 test -f .git/HEAD &&
15                 > .git/a &&
16                 echo a > a &&
17                 svn_cmd add .git a &&
18                 svn_cmd commit -m "create a nested git repo" &&
19                 svn_cmd up &&
20                 echo hi >> .git/a &&
21                 svn_cmd commit -m "modify .git/a" &&
22                 svn_cmd up
23         )
24 '
25
26 test_expect_success 'clone an SVN repo containing a git repo' '
27         git svn clone "$svnrepo" g &&
28         echo a > expect &&
29         test_cmp expect g/a
30 '
31
32 test_expect_success 'SVN-side change outside of .git' '
33         (
34                 cd s &&
35                 echo b >> a &&
36                 svn_cmd commit -m "SVN-side change outside of .git" &&
37                 svn_cmd up &&
38                 svn_cmd log -v | fgrep "SVN-side change outside of .git"
39         )
40 '
41
42 test_expect_success 'update git svn-cloned repo' '
43         (
44                 cd g &&
45                 git svn rebase &&
46                 echo a > expect &&
47                 echo b >> expect &&
48                 test_cmp a expect &&
49                 rm expect
50         )
51 '
52
53 test_expect_success 'SVN-side change inside of .git' '
54         (
55                 cd s &&
56                 git add a &&
57                 git commit -m "add a inside an SVN repo" &&
58                 git log &&
59                 svn_cmd add --force .git &&
60                 svn_cmd commit -m "SVN-side change inside of .git" &&
61                 svn_cmd up &&
62                 svn_cmd log -v | fgrep "SVN-side change inside of .git"
63         )
64 '
65
66 test_expect_success 'update git svn-cloned repo' '
67         (
68                 cd g &&
69                 git svn rebase &&
70                 echo a > expect &&
71                 echo b >> expect &&
72                 test_cmp a expect &&
73                 rm expect
74         )
75 '
76
77 test_expect_success 'SVN-side change in and out of .git' '
78         (
79                 cd s &&
80                 echo c >> a &&
81                 git add a &&
82                 git commit -m "add a inside an SVN repo" &&
83                 svn_cmd commit -m "SVN-side change in and out of .git" &&
84                 svn_cmd up &&
85                 svn_cmd log -v | fgrep "SVN-side change in and out of .git"
86         )
87 '
88
89 test_expect_success 'update git svn-cloned repo again' '
90         (
91                 cd g &&
92                 git svn rebase &&
93                 echo a > expect &&
94                 echo b >> expect &&
95                 echo c >> expect &&
96                 test_cmp a expect &&
97                 rm expect
98         )
99 '
100
101 test_done