git

Форк
0
/t
/
make-svnmerge-dump 
305 строк · 6.9 Кб
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

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 " * $*"
23
}
24

25
i=0
26
cd foo
27
mkdir trunk
28
mkdir branches
29
mkdir tags
30
svn add trunk branches tags
31
i=$(commit $i "Setup trunk, branches, and tags")
32

33
git cat-file blob 6683463e:Makefile > trunk/Makefile
34
svn add trunk/Makefile 
35

36
say "Committing ANCESTOR"
37
i=$(commit $i "ancestor")
38
svn cp trunk branches/left
39

40
say "Committing BRANCH POINT"
41
i=$(commit $i "make left branch")
42
svn cp trunk branches/right
43

44
say "Committing other BRANCH POINT"
45
i=$(commit $i "make right branch")
46

47
say "Committing LEFT UPDATE"
48
git cat-file blob 5873b67e:Makefile > branches/left/Makefile
49
i=$(commit $i "left update 1")
50

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")
55

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")
61

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")
66

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")
71

72
say "Merging LEFT to TRUNK"
73
svn update
74
cd trunk
75
svn merge ../branches/left --accept postpone
76
git cat-file blob b5039db6:Makefile > Makefile
77
svn resolved Makefile
78
i=$(commit $i "Merge left to trunk 1")
79
cd ..
80

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")
88

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 ..
95

96
say "Merging RIGHT to TRUNK"
97
svn update
98
cd trunk
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 ..
104

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")
112

113
say "Merging RIGHT to LEFT SUB-BRANCH"
114
svn update
115
cd branches/left-sub
116
svn merge ../right --accept postpone
117
git cat-file blob b51ad431:Makefile > Makefile
118
svn resolved Makefile
119
i=$(commit $i "Merge right to left sub-branch")
120
cd ../..
121

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 ../..
138

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")
145
cd ../..
146

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

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

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
260
svn cp trunk/subdir branches/partial
261
i=$(commit $i "make partial branch")
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
280
svn cp trunk tags/v1.0
281
i=$(commit $i "tagging v1.0")
282

283
say "Branching BUGFIX from v1.0"
284
svn update
285
svn cp tags/v1.0 branches/bugfix
286
i=$(commit $i "make bugfix branch from tag")
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

302
cd ..
303
svnadmin dump foo.svn > svn-mergeinfo.dump
304

305
rm -rf foo foo.svn
306

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.