##// END OF EJS Templates
rebase: reinforce testing around precommit hook interrupting a rebase...
marmoute -
r33138:e7faa4a1 stable
parent child Browse files
Show More
@@ -1,326 +1,381 b''
1 1 $ cat >> $HGRCPATH <<EOF
2 2 > [extensions]
3 3 > rebase=
4 4 >
5 5 > [phases]
6 6 > publish=False
7 7 >
8 8 > [alias]
9 9 > tglog = log -G --template "{rev}: '{desc}' {branches}\n"
10 10 > tglogp = log -G --template "{rev}:{phase} '{desc}' {branches}\n"
11 11 > EOF
12 12
13 13
14 14 $ hg init a
15 15 $ cd a
16 16
17 17 $ echo A > A
18 18 $ hg ci -Am A
19 19 adding A
20 20
21 21 $ echo B > B
22 22 $ hg ci -Am B
23 23 adding B
24 24
25 25 $ echo C >> A
26 26 $ hg ci -m C
27 27
28 28 $ hg up -q -C 0
29 29
30 30 $ echo D >> A
31 31 $ hg ci -m D
32 32 created new head
33 33
34 34 $ echo E > E
35 35 $ hg ci -Am E
36 36 adding E
37 37
38 38 $ cd ..
39 39
40 40
41 41 Changes during an interruption - continue:
42 42
43 43 $ hg clone -q -u . a a1
44 44 $ cd a1
45 45
46 46 $ hg tglog
47 47 @ 4: 'E'
48 48 |
49 49 o 3: 'D'
50 50 |
51 51 | o 2: 'C'
52 52 | |
53 53 | o 1: 'B'
54 54 |/
55 55 o 0: 'A'
56 56
57 57 Rebasing B onto E:
58 58
59 59 $ hg rebase -s 1 -d 4
60 60 rebasing 1:27547f69f254 "B"
61 61 rebasing 2:965c486023db "C"
62 62 merging A
63 63 warning: conflicts while merging A! (edit, then use 'hg resolve --mark')
64 64 unresolved conflicts (see hg resolve, then hg rebase --continue)
65 65 [1]
66 66
67 67 Force a commit on C during the interruption:
68 68
69 69 $ hg up -q -C 2 --config 'extensions.rebase=!'
70 70
71 71 $ echo 'Extra' > Extra
72 72 $ hg add Extra
73 73 $ hg ci -m 'Extra' --config 'extensions.rebase=!'
74 74
75 75 Force this commit onto secret phase
76 76
77 77 $ hg phase --force --secret 6
78 78
79 79 $ hg tglogp
80 80 @ 6:secret 'Extra'
81 81 |
82 82 | o 5:draft 'B'
83 83 | |
84 84 | o 4:draft 'E'
85 85 | |
86 86 | o 3:draft 'D'
87 87 | |
88 88 o | 2:draft 'C'
89 89 | |
90 90 o | 1:draft 'B'
91 91 |/
92 92 o 0:draft 'A'
93 93
94 94 Resume the rebasing:
95 95
96 96 $ hg rebase --continue
97 97 already rebased 1:27547f69f254 "B" as 45396c49d53b
98 98 rebasing 2:965c486023db "C"
99 99 merging A
100 100 warning: conflicts while merging A! (edit, then use 'hg resolve --mark')
101 101 unresolved conflicts (see hg resolve, then hg rebase --continue)
102 102 [1]
103 103
104 104 Solve the conflict and go on:
105 105
106 106 $ echo 'conflict solved' > A
107 107 $ rm A.orig
108 108 $ hg resolve -m A
109 109 (no more unresolved files)
110 110 continue: hg rebase --continue
111 111
112 112 $ hg rebase --continue
113 113 already rebased 1:27547f69f254 "B" as 45396c49d53b
114 114 rebasing 2:965c486023db "C"
115 115 warning: new changesets detected on source branch, not stripping
116 116
117 117 $ hg tglogp
118 118 o 7:draft 'C'
119 119 |
120 120 | o 6:secret 'Extra'
121 121 | |
122 122 o | 5:draft 'B'
123 123 | |
124 124 @ | 4:draft 'E'
125 125 | |
126 126 o | 3:draft 'D'
127 127 | |
128 128 | o 2:draft 'C'
129 129 | |
130 130 | o 1:draft 'B'
131 131 |/
132 132 o 0:draft 'A'
133 133
134 134 $ cd ..
135 135
136 136
137 137 Changes during an interruption - abort:
138 138
139 139 $ hg clone -q -u . a a2
140 140 $ cd a2
141 141
142 142 $ hg tglog
143 143 @ 4: 'E'
144 144 |
145 145 o 3: 'D'
146 146 |
147 147 | o 2: 'C'
148 148 | |
149 149 | o 1: 'B'
150 150 |/
151 151 o 0: 'A'
152 152
153 153 Rebasing B onto E:
154 154
155 155 $ hg rebase -s 1 -d 4
156 156 rebasing 1:27547f69f254 "B"
157 157 rebasing 2:965c486023db "C"
158 158 merging A
159 159 warning: conflicts while merging A! (edit, then use 'hg resolve --mark')
160 160 unresolved conflicts (see hg resolve, then hg rebase --continue)
161 161 [1]
162 162
163 163 Force a commit on B' during the interruption:
164 164
165 165 $ hg up -q -C 5 --config 'extensions.rebase=!'
166 166
167 167 $ echo 'Extra' > Extra
168 168 $ hg add Extra
169 169 $ hg ci -m 'Extra' --config 'extensions.rebase=!'
170 170
171 171 $ hg tglog
172 172 @ 6: 'Extra'
173 173 |
174 174 o 5: 'B'
175 175 |
176 176 o 4: 'E'
177 177 |
178 178 o 3: 'D'
179 179 |
180 180 | o 2: 'C'
181 181 | |
182 182 | o 1: 'B'
183 183 |/
184 184 o 0: 'A'
185 185
186 186 Abort the rebasing:
187 187
188 188 $ hg rebase --abort
189 189 warning: new changesets detected on target branch, can't strip
190 190 rebase aborted
191 191
192 192 $ hg tglog
193 193 @ 6: 'Extra'
194 194 |
195 195 o 5: 'B'
196 196 |
197 197 o 4: 'E'
198 198 |
199 199 o 3: 'D'
200 200 |
201 201 | o 2: 'C'
202 202 | |
203 203 | o 1: 'B'
204 204 |/
205 205 o 0: 'A'
206 206
207 207 $ cd ..
208 208
209 209 Changes during an interruption - abort (again):
210 210
211 211 $ hg clone -q -u . a a3
212 212 $ cd a3
213 213
214 214 $ hg tglogp
215 215 @ 4:draft 'E'
216 216 |
217 217 o 3:draft 'D'
218 218 |
219 219 | o 2:draft 'C'
220 220 | |
221 221 | o 1:draft 'B'
222 222 |/
223 223 o 0:draft 'A'
224 224
225 225 Rebasing B onto E:
226 226
227 227 $ hg rebase -s 1 -d 4
228 228 rebasing 1:27547f69f254 "B"
229 229 rebasing 2:965c486023db "C"
230 230 merging A
231 231 warning: conflicts while merging A! (edit, then use 'hg resolve --mark')
232 232 unresolved conflicts (see hg resolve, then hg rebase --continue)
233 233 [1]
234 234
235 235 Change phase on B and B'
236 236
237 237 $ hg up -q -C 5 --config 'extensions.rebase=!'
238 238 $ hg phase --public 1
239 239 $ hg phase --public 5
240 240 $ hg phase --secret -f 2
241 241
242 242 $ hg tglogp
243 243 @ 5:public 'B'
244 244 |
245 245 o 4:public 'E'
246 246 |
247 247 o 3:public 'D'
248 248 |
249 249 | o 2:secret 'C'
250 250 | |
251 251 | o 1:public 'B'
252 252 |/
253 253 o 0:public 'A'
254 254
255 255 Abort the rebasing:
256 256
257 257 $ hg rebase --abort
258 258 warning: can't clean up public changesets 45396c49d53b
259 259 rebase aborted
260 260
261 261 $ hg tglogp
262 262 @ 5:public 'B'
263 263 |
264 264 o 4:public 'E'
265 265 |
266 266 o 3:public 'D'
267 267 |
268 268 | o 2:secret 'C'
269 269 | |
270 270 | o 1:public 'B'
271 271 |/
272 272 o 0:public 'A'
273 273
274 274
275 Test rebase interrupted by hooks (pretxncommit)
275 Test rebase interrupted by hooks
276 276
277 277 $ hg up 2
278 278 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
279 279 $ echo F > F
280 280 $ hg add F
281 281 $ hg ci -m F
282
283 $ cd ..
284
285 (precommit version)
286
287 $ cp -R a3 hook-precommit
288 $ cd hook-precommit
289 $ hg rebase --source 2 --dest 5 --tool internal:other --config 'hooks.precommit=hg status | grep "M A"'
290 rebasing 2:965c486023db "C"
291 M A
292 rebasing 6:a0b2430ebfb8 "F" (tip)
293 abort: precommit hook exited with status 1
294 [255]
295 $ hg tglogp
296 @ 7:secret 'C'
297 |
298 | @ 6:secret 'F'
299 | |
300 o | 5:public 'B'
301 | |
302 o | 4:public 'E'
303 | |
304 o | 3:public 'D'
305 | |
306 | o 2:secret 'C'
307 | |
308 | o 1:public 'B'
309 |/
310 o 0:public 'A'
311
312 $ hg rebase --continue
313 already rebased 2:965c486023db "C" as 401ccec5e39f
314 rebasing 6:a0b2430ebfb8 "F"
315 saved backup bundle to $TESTTMP/hook-precommit/.hg/strip-backup/965c486023db-aa6250e7-backup.hg (glob)
316 $ hg tglogp
317 @ 6:secret 'F'
318 |
319 o 5:secret 'C'
320 |
321 o 4:public 'B'
322 |
323 o 3:public 'E'
324 |
325 o 2:public 'D'
326 |
327 | o 1:public 'B'
328 |/
329 o 0:public 'A'
330
331 $ cd ..
332
333 (pretxncommit version)
334
335 $ cp -R a3 hook-pretxncommit
336 $ cd hook-pretxncommit
282 337 $ hg rebase --source 2 --dest 5 --tool internal:other --config 'hooks.pretxncommit=hg log -r $HG_NODE | grep "summary: C"'
283 338 rebasing 2:965c486023db "C"
284 339 summary: C
285 340 rebasing 6:a0b2430ebfb8 "F" (tip)
286 341 transaction abort!
287 342 rollback completed
288 343 abort: pretxncommit hook exited with status 1
289 344 [255]
290 345 $ hg tglogp
291 346 @ 7:secret 'C'
292 347 |
293 348 | @ 6:secret 'F'
294 349 | |
295 350 o | 5:public 'B'
296 351 | |
297 352 o | 4:public 'E'
298 353 | |
299 354 o | 3:public 'D'
300 355 | |
301 356 | o 2:secret 'C'
302 357 | |
303 358 | o 1:public 'B'
304 359 |/
305 360 o 0:public 'A'
306 361
307 362 $ hg rebase --continue
308 363 already rebased 2:965c486023db "C" as 401ccec5e39f
309 364 rebasing 6:a0b2430ebfb8 "F"
310 saved backup bundle to $TESTTMP/a3/.hg/strip-backup/965c486023db-aa6250e7-backup.hg (glob)
365 saved backup bundle to $TESTTMP/hook-pretxncommit/.hg/strip-backup/965c486023db-aa6250e7-backup.hg (glob)
311 366 $ hg tglogp
312 367 @ 6:secret 'F'
313 368 |
314 369 o 5:secret 'C'
315 370 |
316 371 o 4:public 'B'
317 372 |
318 373 o 3:public 'E'
319 374 |
320 375 o 2:public 'D'
321 376 |
322 377 | o 1:public 'B'
323 378 |/
324 379 o 0:public 'A'
325 380
326 381 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now