]>
Commit | Line | Data |
---|---|---|
ce626830 SV |
1 | #!/bin/sh |
2 | # | |
3 | # this script sets up a Subversion repository for Makefile in the | |
4 | # first ever git merge, as if it were done with svnmerge (SVN 1.5+) | |
5 | # | |
6 | ||
7 | rm -rf foo.svn foo | |
8 | set -e | |
9 | ||
10 | mkdir foo.svn | |
11 | svnadmin create foo.svn | |
12 | svn co file://`pwd`/foo.svn foo | |
13 | ||
1d144aa2 SV |
14 | commit() { |
15 | i=$(( $1 + 1 )) | |
16 | shift; | |
17 | svn commit -m "(r$i) $*" >/dev/null || exit 1 | |
18 | echo $i | |
19 | } | |
20 | ||
21 | say() { | |
22 | echo "\e[1m * $*\e[0m" | |
23 | } | |
24 | ||
25 | i=0 | |
ce626830 SV |
26 | cd foo |
27 | mkdir trunk | |
28 | mkdir branches | |
c79f1189 AM |
29 | mkdir tags |
30 | svn add trunk branches tags | |
31 | i=$(commit $i "Setup trunk, branches, and tags") | |
ce626830 | 32 | |
1d144aa2 SV |
33 | git cat-file blob 6683463e:Makefile > trunk/Makefile |
34 | svn add trunk/Makefile | |
ce626830 | 35 | |
1d144aa2 SV |
36 | say "Committing ANCESTOR" |
37 | i=$(commit $i "ancestor") | |
ce626830 SV |
38 | svn cp trunk branches/left |
39 | ||
1d144aa2 SV |
40 | say "Committing BRANCH POINT" |
41 | i=$(commit $i "make left branch") | |
753dc384 TA |
42 | svn cp trunk branches/right |
43 | ||
1d144aa2 SV |
44 | say "Committing other BRANCH POINT" |
45 | i=$(commit $i "make right branch") | |
ce626830 | 46 | |
1d144aa2 SV |
47 | say "Committing LEFT UPDATE" |
48 | git cat-file blob 5873b67e:Makefile > branches/left/Makefile | |
49 | i=$(commit $i "left update 1") | |
ce626830 | 50 | |
1d144aa2 SV |
51 | git cat-file blob 75118b13:Makefile > branches/right/Makefile |
52 | say "Committing RIGHT UPDATE" | |
53 | pre_right_update_1=$i | |
54 | i=$(commit $i "right update 1") | |
ce626830 | 55 | |
1d144aa2 SV |
56 | say "Making more commits on LEFT" |
57 | git cat-file blob ff5ebe39:Makefile > branches/left/Makefile | |
58 | i=$(commit $i "left update 2") | |
59 | git cat-file blob b5039db6:Makefile > branches/left/Makefile | |
60 | i=$(commit $i "left update 3") | |
ce626830 | 61 | |
1d144aa2 SV |
62 | say "Making a LEFT SUB-BRANCH" |
63 | svn cp branches/left branches/left-sub | |
64 | sub_left_make=$i | |
65 | i=$(commit $i "make left sub-branch") | |
ce626830 | 66 | |
1d144aa2 SV |
67 | say "Making a commit on LEFT SUB-BRANCH" |
68 | echo "crunch" > branches/left-sub/README | |
69 | svn add branches/left-sub/README | |
70 | i=$(commit $i "left sub-branch update 1") | |
ce626830 | 71 | |
1d144aa2 | 72 | say "Merging LEFT to TRUNK" |
ce626830 SV |
73 | svn update |
74 | cd trunk | |
ce626830 | 75 | svn merge ../branches/left --accept postpone |
1d144aa2 | 76 | git cat-file blob b5039db6:Makefile > Makefile |
ce626830 | 77 | svn resolved Makefile |
1d144aa2 SV |
78 | i=$(commit $i "Merge left to trunk 1") |
79 | cd .. | |
ce626830 | 80 | |
1d144aa2 SV |
81 | say "Making more commits on LEFT and RIGHT" |
82 | echo "touche" > branches/left/zlonk | |
83 | svn add branches/left/zlonk | |
84 | i=$(commit $i "left update 4") | |
85 | echo "thwacke" > branches/right/bang | |
86 | svn add branches/right/bang | |
87 | i=$(commit $i "right update 2") | |
753dc384 | 88 | |
1d144aa2 SV |
89 | say "Squash merge of RIGHT tip 2 commits onto TRUNK" |
90 | svn update | |
91 | cd trunk | |
92 | svn merge -r$pre_right_update_1:$i ../branches/right | |
93 | i=$(commit $i "Cherry-pick right 2 commits to trunk") | |
94 | cd .. | |
753dc384 | 95 | |
1d144aa2 | 96 | say "Merging RIGHT to TRUNK" |
753dc384 TA |
97 | svn update |
98 | cd trunk | |
1d144aa2 SV |
99 | svn merge ../branches/right --accept postpone |
100 | git cat-file blob b51ad431:Makefile > Makefile | |
101 | svn resolved Makefile | |
102 | i=$(commit $i "Merge right to trunk 1") | |
103 | cd .. | |
753dc384 | 104 | |
1d144aa2 SV |
105 | say "Making more commits on RIGHT and TRUNK" |
106 | echo "whamm" > branches/right/urkkk | |
107 | svn add branches/right/urkkk | |
108 | i=$(commit $i "right update 3") | |
109 | echo "pow" > trunk/vronk | |
110 | svn add trunk/vronk | |
111 | i=$(commit $i "trunk update 1") | |
753dc384 | 112 | |
1d144aa2 SV |
113 | say "Merging RIGHT to LEFT SUB-BRANCH" |
114 | svn update | |
115 | cd branches/left-sub | |
116 | svn merge ../right --accept postpone | |
753dc384 | 117 | git cat-file blob b51ad431:Makefile > Makefile |
753dc384 | 118 | svn resolved Makefile |
1d144aa2 SV |
119 | i=$(commit $i "Merge right to left sub-branch") |
120 | cd ../.. | |
753dc384 | 121 | |
1d144aa2 SV |
122 | say "Making more commits on LEFT SUB-BRANCH and LEFT" |
123 | echo "zowie" > branches/left-sub/wham_eth | |
124 | svn add branches/left-sub/wham_eth | |
125 | pre_sub_left_update_2=$i | |
126 | i=$(commit $i "left sub-branch update 2") | |
127 | sub_left_update_2=$i | |
128 | echo "eee_yow" > branches/left/glurpp | |
129 | svn add branches/left/glurpp | |
130 | i=$(commit $i "left update 5") | |
131 | ||
132 | say "Cherry pick LEFT SUB-BRANCH commit to LEFT" | |
133 | svn update | |
134 | cd branches/left | |
135 | svn merge -r$pre_sub_left_update_2:$sub_left_update_2 ../left-sub | |
136 | i=$(commit $i "Cherry-pick left sub-branch commit to left") | |
137 | cd ../.. | |
ce626830 | 138 | |
1d144aa2 SV |
139 | say "Merging LEFT SUB-BRANCH back to LEFT" |
140 | svn update | |
141 | cd branches/left | |
142 | # it's only a merge because the previous merge cherry-picked the top commit | |
143 | svn merge -r$sub_left_make:$sub_left_update_2 ../left-sub --accept postpone | |
144 | i=$(commit $i "Merge left sub-branch to left") | |
ce626830 SV |
145 | cd ../.. |
146 | ||
1d144aa2 SV |
147 | say "Merging EVERYTHING to TRUNK" |
148 | svn update | |
149 | cd trunk | |
150 | svn merge ../branches/left --accept postpone | |
151 | svn resolved bang | |
152 | i=$(commit $i "Merge left to trunk 2") | |
153 | # this merge, svn happily updates the mergeinfo, but there is actually | |
154 | # nothing to merge. git-svn will not make a meaningless merge commit. | |
155 | svn merge ../branches/right --accept postpone | |
156 | i=$(commit $i "non-merge right to trunk 2") | |
157 | cd .. | |
158 | ||
9560808f TS |
159 | say "Branching b1 from trunk" |
160 | svn update | |
161 | svn cp trunk branches/b1 | |
162 | i=$(commit $i "make b1 branch from trunk") | |
163 | ||
164 | say "Branching b2 from trunk" | |
165 | svn update | |
166 | svn cp trunk branches/b2 | |
167 | i=$(commit $i "make b2 branch from trunk") | |
168 | ||
169 | say "Make a commit to b2" | |
170 | svn update | |
171 | cd branches/b2 | |
172 | echo "b2" > b2file | |
173 | svn add b2file | |
174 | i=$(commit $i "b2 update 1") | |
175 | cd ../.. | |
176 | ||
177 | say "Make a commit to b1" | |
178 | svn update | |
179 | cd branches/b1 | |
180 | echo "b1" > b1file | |
181 | svn add b1file | |
182 | i=$(commit $i "b1 update 1") | |
183 | cd ../.. | |
184 | ||
185 | say "Merge b1 to trunk" | |
186 | svn update | |
187 | cd trunk | |
188 | svn merge ../branches/b1/ --accept postpone | |
189 | i=$(commit $i "Merge b1 to trunk") | |
190 | cd .. | |
191 | ||
192 | say "Make a commit to trunk before merging trunk to b2" | |
193 | svn update | |
194 | cd trunk | |
195 | echo "trunk" > trunkfile | |
196 | svn add trunkfile | |
197 | i=$(commit $i "trunk commit before merging trunk to b2") | |
198 | cd .. | |
199 | ||
200 | say "Merge trunk to b2" | |
201 | svn update | |
202 | cd branches/b2 | |
203 | svn merge ../../trunk/ --accept postpone | |
204 | i=$(commit $i "Merge trunk to b2") | |
205 | cd ../.. | |
206 | ||
207 | say "Merge b2 to trunk" | |
208 | svn update | |
209 | cd trunk | |
210 | svn merge ../branches/b2/ --accept postpone | |
211 | svn resolved b1file | |
212 | svn resolved trunkfile | |
213 | i=$(commit $i "Merge b2 to trunk") | |
214 | cd .. | |
215 | ||
216 | say "Creating f1 from trunk with a new file" | |
217 | svn update | |
218 | svn cp trunk branches/f1 | |
219 | cd branches/f1 | |
220 | echo "f1" > f1file | |
221 | svn add f1file | |
222 | cd ../.. | |
223 | i=$(commit $i "make f1 branch from trunk with a new file") | |
224 | ||
225 | say "Creating f2 from trunk with a new file" | |
226 | svn update | |
227 | svn cp trunk branches/f2 | |
228 | cd branches/f2 | |
229 | echo "f2" > f2file | |
230 | svn add f2file | |
231 | cd ../.. | |
232 | i=$(commit $i "make f2 branch from trunk with a new file") | |
233 | ||
234 | say "Merge f1 and f2 to trunk in one go" | |
235 | svn update | |
236 | cd trunk | |
237 | svn merge ../branches/f1/ --accept postpone | |
238 | svn merge ../branches/f2/ --accept postpone | |
239 | i=$(commit $i "Merge f1 and f2 to trunk") | |
240 | cd .. | |
241 | ||
c79f1189 AM |
242 | say "Adding subdirectory to LEFT" |
243 | svn update | |
244 | cd branches/left | |
245 | mkdir subdir | |
246 | echo "Yeehaw" > subdir/cowboy | |
247 | svn add subdir | |
248 | i=$(commit $i "add subdirectory to left branch") | |
249 | cd ../../ | |
250 | ||
251 | say "Merging LEFT to TRUNK" | |
252 | svn update | |
253 | cd trunk | |
254 | svn merge ../branches/left --accept postpone | |
255 | i=$(commit $i "merge left to trunk") | |
256 | cd .. | |
257 | ||
258 | say "Make PARTIAL branch" | |
259 | svn update | |
c79f1189 | 260 | svn cp trunk/subdir branches/partial |
ae5b370c | 261 | i=$(commit $i "make partial branch") |
c79f1189 AM |
262 | |
263 | say "Make a commit to PARTIAL" | |
264 | svn update | |
265 | cd branches/partial | |
266 | echo "racecar" > palindromes | |
267 | svn add palindromes | |
268 | i=$(commit $i "partial update") | |
269 | cd ../../ | |
270 | ||
271 | say "Merge PARTIAL to TRUNK" | |
272 | svn update | |
273 | cd trunk/subdir | |
274 | svn merge ../../branches/partial --accept postpone | |
275 | i=$(commit $i "merge partial to trunk") | |
276 | cd ../../ | |
277 | ||
278 | say "Tagging trunk" | |
279 | svn update | |
c79f1189 | 280 | svn cp trunk tags/v1.0 |
ae5b370c | 281 | i=$(commit $i "tagging v1.0") |
c79f1189 AM |
282 | |
283 | say "Branching BUGFIX from v1.0" | |
284 | svn update | |
c79f1189 | 285 | svn cp tags/v1.0 branches/bugfix |
ae5b370c | 286 | i=$(commit $i "make bugfix branch from tag") |
c79f1189 AM |
287 | |
288 | say "Make a commit to BUGFIX" | |
289 | svn update | |
290 | cd branches/bugfix/ | |
291 | echo "kayak" >> subdir/palindromes | |
292 | i=$(commit $i "commit to bugfix") | |
293 | cd ../../ | |
294 | ||
295 | say "Merge BUGFIX to TRUNK" | |
296 | svn update | |
297 | cd trunk | |
298 | svn merge ../branches/bugfix/ --accept postpone | |
299 | i=$(commit $i "Merge BUGFIX to TRUNK") | |
300 | cd .. | |
301 | ||
1d144aa2 | 302 | cd .. |
ce626830 SV |
303 | svnadmin dump foo.svn > svn-mergeinfo.dump |
304 | ||
305 | rm -rf foo foo.svn |