]>
Commit | Line | Data |
---|---|---|
96a40b27 EW |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2006 Eric Wong | |
4 | # | |
5 | ||
60d02ccc | 6 | test_description='git-svn basic tests' |
7a97de4e | 7 | GIT_SVN_LC_ALL=$LC_ALL |
dc62e25c EW |
8 | |
9 | case "$LC_ALL" in | |
10 | *.UTF-8) | |
11 | have_utf8=t | |
12 | ;; | |
13 | *) | |
14 | have_utf8= | |
15 | ;; | |
16 | esac | |
17 | ||
36f5b1f0 | 18 | . ./lib-git-svn.sh |
96a40b27 | 19 | |
60d02ccc EW |
20 | echo 'define NO_SVN_TESTS to skip git-svn tests' |
21 | ||
96a40b27 | 22 | mkdir import |
96a40b27 EW |
23 | cd import |
24 | ||
25 | echo foo > foo | |
0e8a002c EW |
26 | if test -z "$NO_SYMLINK" |
27 | then | |
28 | ln -s foo foo.link | |
29 | fi | |
96a40b27 EW |
30 | mkdir -p dir/a/b/c/d/e |
31 | echo 'deep dir' > dir/a/b/c/d/e/file | |
32 | mkdir -p bar | |
33 | echo 'zzz' > bar/zzz | |
34 | echo '#!/bin/sh' > exec.sh | |
35 | chmod +x exec.sh | |
36f5b1f0 | 36 | svn import -m 'import for git-svn' . "$svnrepo" >/dev/null |
96a40b27 EW |
37 | |
38 | cd .. | |
96a40b27 EW |
39 | rm -rf import |
40 | ||
41 | test_expect_success \ | |
42 | 'initialize git-svn' \ | |
43 | "git-svn init $svnrepo" | |
44 | ||
45 | test_expect_success \ | |
46 | 'import an SVN revision into git' \ | |
47 | 'git-svn fetch' | |
48 | ||
a5e0cedc | 49 | test_expect_success "checkout from svn" "svn co $svnrepo $SVN_TREE" |
96a40b27 EW |
50 | |
51 | name='try a deep --rmdir with a commit' | |
c7162c1d | 52 | git checkout -f -b mybranch remotes/git-svn |
96a40b27 EW |
53 | mv dir/a/b/c/d/e/file dir/file |
54 | cp dir/file file | |
55 | git update-index --add --remove dir/a/b/c/d/e/file dir/file file | |
56 | git commit -m "$name" | |
57 | ||
58 | test_expect_success "$name" \ | |
2beb3cdd | 59 | "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch && |
a5e0cedc | 60 | svn up $SVN_TREE && |
96a40b27 EW |
61 | test -d $SVN_TREE/dir && test ! -d $SVN_TREE/dir/a" |
62 | ||
63 | ||
64 | name='detect node change from file to directory #1' | |
65 | mkdir dir/new_file | |
66 | mv dir/file dir/new_file/file | |
67 | mv dir/new_file dir/file | |
68 | git update-index --remove dir/file | |
69 | git update-index --add dir/file/file | |
70 | git commit -m "$name" | |
71 | ||
a5e0cedc | 72 | test_expect_failure "$name" \ |
2beb3cdd | 73 | 'git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch' \ |
96a40b27 EW |
74 | || true |
75 | ||
76 | ||
77 | name='detect node change from directory to file #1' | |
78 | rm -rf dir $GIT_DIR/index | |
c7162c1d | 79 | git checkout -f -b mybranch2 remotes/git-svn |
96a40b27 EW |
80 | mv bar/zzz zzz |
81 | rm -rf bar | |
82 | mv zzz bar | |
83 | git update-index --remove -- bar/zzz | |
84 | git update-index --add -- bar | |
85 | git commit -m "$name" | |
86 | ||
a5e0cedc | 87 | test_expect_failure "$name" \ |
2beb3cdd | 88 | 'git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch2' \ |
96a40b27 EW |
89 | || true |
90 | ||
91 | ||
92 | name='detect node change from file to directory #2' | |
93 | rm -f $GIT_DIR/index | |
c7162c1d | 94 | git checkout -f -b mybranch3 remotes/git-svn |
96a40b27 EW |
95 | rm bar/zzz |
96 | git-update-index --remove bar/zzz | |
97 | mkdir bar/zzz | |
98 | echo yyy > bar/zzz/yyy | |
99 | git-update-index --add bar/zzz/yyy | |
100 | git commit -m "$name" | |
101 | ||
a5e0cedc | 102 | test_expect_failure "$name" \ |
2beb3cdd | 103 | 'git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch3' \ |
96a40b27 EW |
104 | || true |
105 | ||
106 | ||
107 | name='detect node change from directory to file #2' | |
108 | rm -f $GIT_DIR/index | |
c7162c1d | 109 | git checkout -f -b mybranch4 remotes/git-svn |
96a40b27 EW |
110 | rm -rf dir |
111 | git update-index --remove -- dir/file | |
112 | touch dir | |
113 | echo asdf > dir | |
114 | git update-index --add -- dir | |
115 | git commit -m "$name" | |
116 | ||
a5e0cedc | 117 | test_expect_failure "$name" \ |
2beb3cdd | 118 | 'git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch4' \ |
96a40b27 EW |
119 | || true |
120 | ||
121 | ||
122 | name='remove executable bit from a file' | |
123 | rm -f $GIT_DIR/index | |
c7162c1d | 124 | git checkout -f -b mybranch5 remotes/git-svn |
96a40b27 EW |
125 | chmod -x exec.sh |
126 | git update-index exec.sh | |
127 | git commit -m "$name" | |
128 | ||
129 | test_expect_success "$name" \ | |
2beb3cdd | 130 | "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && |
a5e0cedc | 131 | svn up $SVN_TREE && |
96a40b27 EW |
132 | test ! -x $SVN_TREE/exec.sh" |
133 | ||
134 | ||
135 | name='add executable bit back file' | |
136 | chmod +x exec.sh | |
137 | git update-index exec.sh | |
138 | git commit -m "$name" | |
139 | ||
140 | test_expect_success "$name" \ | |
2beb3cdd | 141 | "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && |
a5e0cedc | 142 | svn up $SVN_TREE && |
96a40b27 EW |
143 | test -x $SVN_TREE/exec.sh" |
144 | ||
145 | ||
146 | ||
0e8a002c EW |
147 | if test -z "$NO_SYMLINK" |
148 | then | |
149 | name='executable file becomes a symlink to bar/zzz (file)' | |
150 | rm exec.sh | |
151 | ln -s bar/zzz exec.sh | |
152 | git update-index exec.sh | |
153 | git commit -m "$name" | |
154 | ||
155 | test_expect_success "$name" \ | |
156 | "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && | |
157 | svn up $SVN_TREE && | |
158 | test -L $SVN_TREE/exec.sh" | |
159 | ||
160 | name='new symlink is added to a file that was also just made executable' | |
161 | chmod +x bar/zzz | |
162 | ln -s bar/zzz exec-2.sh | |
163 | git update-index --add bar/zzz exec-2.sh | |
164 | git commit -m "$name" | |
165 | ||
166 | test_expect_success "$name" \ | |
167 | "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && | |
168 | svn up $SVN_TREE && | |
169 | test -x $SVN_TREE/bar/zzz && | |
170 | test -L $SVN_TREE/exec-2.sh" | |
171 | ||
172 | name='modify a symlink to become a file' | |
173 | git help > help || true | |
174 | rm exec-2.sh | |
175 | cp help exec-2.sh | |
176 | git update-index exec-2.sh | |
177 | git commit -m "$name" | |
178 | ||
179 | test_expect_success "$name" \ | |
180 | "git-svn commit --find-copies-harder --rmdir remotes/git-svn..mybranch5 && | |
181 | svn up $SVN_TREE && | |
182 | test -f $SVN_TREE/exec-2.sh && | |
183 | test ! -L $SVN_TREE/exec-2.sh && | |
184 | diff -u help $SVN_TREE/exec-2.sh" | |
185 | fi | |
96a40b27 EW |
186 | |
187 | ||
dc62e25c | 188 | if test "$have_utf8" = t |
7a97de4e EW |
189 | then |
190 | name="commit with UTF-8 message: locale: $GIT_SVN_LC_ALL" | |
191 | echo '# hello' >> exec-2.sh | |
192 | git update-index exec-2.sh | |
193 | git commit -m 'éï∏' | |
194 | export LC_ALL="$GIT_SVN_LC_ALL" | |
195 | test_expect_success "$name" "git-svn commit HEAD" | |
196 | unset LC_ALL | |
197 | else | |
198 | echo "UTF-8 locale not set, test skipped ($GIT_SVN_LC_ALL)" | |
199 | fi | |
96a40b27 EW |
200 | |
201 | name='test fetch functionality (svn => git) with alternate GIT_SVN_ID' | |
202 | GIT_SVN_ID=alt | |
203 | export GIT_SVN_ID | |
204 | test_expect_success "$name" \ | |
2beb3cdd EW |
205 | "git-svn init $svnrepo && git-svn fetch && |
206 | git-rev-list --pretty=raw remotes/git-svn | grep ^tree | uniq > a && | |
207 | git-rev-list --pretty=raw remotes/alt | grep ^tree | uniq > b && | |
96a40b27 EW |
208 | diff -u a b" |
209 | ||
0e8a002c EW |
210 | if test -n "$NO_SYMLINK" |
211 | then | |
212 | test_done | |
213 | exit 0 | |
214 | fi | |
215 | ||
42d32870 | 216 | name='check imported tree checksums expected tree checksums' |
86f36379 | 217 | rm -f expected |
dc62e25c | 218 | if test "$have_utf8" = t |
86f36379 EW |
219 | then |
220 | echo tree f735671b89a7eb30cab1d8597de35bd4271ab813 > expected | |
221 | fi | |
222 | cat >> expected <<\EOF | |
42d32870 EW |
223 | tree 4b9af72bb861eaed053854ec502cf7df72618f0f |
224 | tree 031b8d557afc6fea52894eaebb45bec52f1ba6d1 | |
225 | tree 0b094cbff17168f24c302e297f55bfac65eb8bd3 | |
226 | tree d667270a1f7b109f5eb3aaea21ede14b56bfdd6e | |
227 | tree 56a30b966619b863674f5978696f4a3594f2fca9 | |
228 | tree d667270a1f7b109f5eb3aaea21ede14b56bfdd6e | |
229 | tree 8f51f74cf0163afc9ad68a4b1537288c4558b5a4 | |
230 | EOF | |
231 | test_expect_success "$name" "diff -u a expected" | |
232 | ||
96a40b27 EW |
233 | test_done |
234 |