##// END OF EJS Templates
tests: demonstrate how continuing rebase after upgrade can result in merge...
Martin von Zweigbergk -
r45156:e89b3603 default
parent child Browse files
Show More
@@ -1,480 +1,545 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}: {node|short} '{desc}' {branches}\n"
10 10 > tglogp = log -G --template "{rev}: {node|short} {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: ae36e8e3dfd7 'E'
48 48 |
49 49 o 3: 46b37eabc604 'D'
50 50 |
51 51 | o 2: 965c486023db 'C'
52 52 | |
53 53 | o 1: 27547f69f254 'B'
54 54 |/
55 55 o 0: 4a2df7238c3b '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: deb5d2f93d8b secret 'Extra'
81 81 |
82 82 | o 5: 45396c49d53b draft 'B'
83 83 | |
84 84 | o 4: ae36e8e3dfd7 draft 'E'
85 85 | |
86 86 | o 3: 46b37eabc604 draft 'D'
87 87 | |
88 88 o | 2: 965c486023db draft 'C'
89 89 | |
90 90 o | 1: 27547f69f254 draft 'B'
91 91 |/
92 92 o 0: 4a2df7238c3b 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: orphaned descendants detected, not stripping 27547f69f254, 965c486023db
116 116
117 117 $ hg tglogp
118 118 o 7: d2d25e26288e draft 'C'
119 119 |
120 120 | o 6: deb5d2f93d8b secret 'Extra'
121 121 | |
122 122 o | 5: 45396c49d53b draft 'B'
123 123 | |
124 124 @ | 4: ae36e8e3dfd7 draft 'E'
125 125 | |
126 126 o | 3: 46b37eabc604 draft 'D'
127 127 | |
128 128 | o 2: 965c486023db draft 'C'
129 129 | |
130 130 | o 1: 27547f69f254 draft 'B'
131 131 |/
132 132 o 0: 4a2df7238c3b 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: ae36e8e3dfd7 'E'
144 144 |
145 145 o 3: 46b37eabc604 'D'
146 146 |
147 147 | o 2: 965c486023db 'C'
148 148 | |
149 149 | o 1: 27547f69f254 'B'
150 150 |/
151 151 o 0: 4a2df7238c3b '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: 402ee3642b59 'Extra'
173 173 |
174 174 o 5: 45396c49d53b 'B'
175 175 |
176 176 o 4: ae36e8e3dfd7 'E'
177 177 |
178 178 o 3: 46b37eabc604 'D'
179 179 |
180 180 | o 2: 965c486023db 'C'
181 181 | |
182 182 | o 1: 27547f69f254 'B'
183 183 |/
184 184 o 0: 4a2df7238c3b 'A'
185 185
186 186 Abort the rebasing:
187 187
188 188 $ hg rebase --abort
189 189 warning: new changesets detected on destination branch, can't strip
190 190 rebase aborted
191 191
192 192 $ hg tglog
193 193 @ 6: 402ee3642b59 'Extra'
194 194 |
195 195 o 5: 45396c49d53b 'B'
196 196 |
197 197 o 4: ae36e8e3dfd7 'E'
198 198 |
199 199 o 3: 46b37eabc604 'D'
200 200 |
201 201 | o 2: 965c486023db 'C'
202 202 | |
203 203 | o 1: 27547f69f254 'B'
204 204 |/
205 205 o 0: 4a2df7238c3b '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: ae36e8e3dfd7 draft 'E'
216 216 |
217 217 o 3: 46b37eabc604 draft 'D'
218 218 |
219 219 | o 2: 965c486023db draft 'C'
220 220 | |
221 221 | o 1: 27547f69f254 draft 'B'
222 222 |/
223 223 o 0: 4a2df7238c3b 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: 45396c49d53b public 'B'
244 244 |
245 245 o 4: ae36e8e3dfd7 public 'E'
246 246 |
247 247 o 3: 46b37eabc604 public 'D'
248 248 |
249 249 | o 2: 965c486023db secret 'C'
250 250 | |
251 251 | o 1: 27547f69f254 public 'B'
252 252 |/
253 253 o 0: 4a2df7238c3b 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: 45396c49d53b public 'B'
263 263 |
264 264 o 4: ae36e8e3dfd7 public 'E'
265 265 |
266 266 o 3: 46b37eabc604 public 'D'
267 267 |
268 268 | o 2: 965c486023db secret 'C'
269 269 | |
270 270 | o 1: 27547f69f254 public 'B'
271 271 |/
272 272 o 0: 4a2df7238c3b public 'A'
273 273
274 274 Test rebase interrupted by hooks
275 275
276 276 $ hg up 2
277 277 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
278 278 $ echo F > F
279 279 $ hg add F
280 280 $ hg ci -m F
281 281
282 282 $ cd ..
283 283
284 Continue rebase after upgrading from an hg version before 9c9cfecd4600:
285
286 $ hg clone -q -u . a a4
287 $ cd a4
288
289 $ hg tglog
290 @ 4: ae36e8e3dfd7 'E'
291 |
292 o 3: 46b37eabc604 'D'
293 |
294 | o 2: 965c486023db 'C'
295 | |
296 | o 1: 27547f69f254 'B'
297 |/
298 o 0: 4a2df7238c3b 'A'
299
300 $ hg rebase -s 1 -d 4
301 rebasing 1:27547f69f254 "B"
302 rebasing 2:965c486023db "C"
303 merging A
304 warning: conflicts while merging A! (edit, then use 'hg resolve --mark')
305 unresolved conflicts (see hg resolve, then hg rebase --continue)
306 [1]
307 $ hg tglog
308 @ 5: 45396c49d53b 'B'
309 |
310 o 4: ae36e8e3dfd7 'E'
311 |
312 o 3: 46b37eabc604 'D'
313 |
314 | % 2: 965c486023db 'C'
315 | |
316 | o 1: 27547f69f254 'B'
317 |/
318 o 0: 4a2df7238c3b 'A'
319
320 Simulate having run the above with an older hg version by manually setting
321 two dirstate parents. We should not get a merge commit when we continue.
322 $ hg debugsetparents 5 2
323 $ echo 'conflict solved' > A
324 $ hg resolve -m A
325 (no more unresolved files)
326 continue: hg rebase --continue
327 $ hg rebase --continue
328 already rebased 1:27547f69f254 "B" as 45396c49d53b
329 rebasing 2:965c486023db "C"
330 warning: orphaned descendants detected, not stripping 27547f69f254, 965c486023db
331 BROKEN: we should not have a merge commit here
332 $ hg tglog
333 o 6: 567335b578a0 'C'
334 |\
335 | o 5: 45396c49d53b 'B'
336 | |
337 | @ 4: ae36e8e3dfd7 'E'
338 | |
339 | o 3: 46b37eabc604 'D'
340 | |
341 o | 2: 965c486023db 'C'
342 | |
343 o | 1: 27547f69f254 'B'
344 |/
345 o 0: 4a2df7238c3b 'A'
346
347 $ cd ..
348
284 349 (precommit version)
285 350
286 351 $ cp -R a3 hook-precommit
287 352 $ cd hook-precommit
288 353 $ hg rebase --source 2 --dest 5 --tool internal:other --config 'hooks.precommit=hg status | grep "M A"'
289 354 rebasing 2:965c486023db "C"
290 355 M A
291 356 rebasing 6:a0b2430ebfb8 "F" (tip)
292 357 abort: precommit hook exited with status 1
293 358 [255]
294 359 $ hg tglogp
295 360 @ 7: 401ccec5e39f secret 'C'
296 361 |
297 362 | o 6: a0b2430ebfb8 secret 'F'
298 363 | |
299 364 o | 5: 45396c49d53b public 'B'
300 365 | |
301 366 o | 4: ae36e8e3dfd7 public 'E'
302 367 | |
303 368 o | 3: 46b37eabc604 public 'D'
304 369 | |
305 370 | o 2: 965c486023db secret 'C'
306 371 | |
307 372 | o 1: 27547f69f254 public 'B'
308 373 |/
309 374 o 0: 4a2df7238c3b public 'A'
310 375
311 376 $ hg rebase --continue
312 377 already rebased 2:965c486023db "C" as 401ccec5e39f
313 378 rebasing 6:a0b2430ebfb8 "F"
314 379 saved backup bundle to $TESTTMP/hook-precommit/.hg/strip-backup/965c486023db-aa6250e7-rebase.hg
315 380 $ hg tglogp
316 381 @ 6: 6e92a149ac6b secret 'F'
317 382 |
318 383 o 5: 401ccec5e39f secret 'C'
319 384 |
320 385 o 4: 45396c49d53b public 'B'
321 386 |
322 387 o 3: ae36e8e3dfd7 public 'E'
323 388 |
324 389 o 2: 46b37eabc604 public 'D'
325 390 |
326 391 | o 1: 27547f69f254 public 'B'
327 392 |/
328 393 o 0: 4a2df7238c3b public 'A'
329 394
330 395 $ cd ..
331 396
332 397 (pretxncommit version)
333 398
334 399 $ cp -R a3 hook-pretxncommit
335 400 $ cd hook-pretxncommit
336 401 $ hg rebase --source 2 --dest 5 --tool internal:other \
337 402 > --config 'hooks.tonative.pretxncommit=True' --config 'hooks.pretxncommit=hg log -r $HG_NODE | grep "summary: C"'
338 403 rebasing 2:965c486023db "C"
339 404 summary: C
340 405 rebasing 6:a0b2430ebfb8 "F" (tip)
341 406 transaction abort!
342 407 rollback completed
343 408 abort: pretxncommit hook exited with status 1
344 409 [255]
345 410 $ hg tglogp
346 411 @ 7: 401ccec5e39f secret 'C'
347 412 |
348 413 | o 6: a0b2430ebfb8 secret 'F'
349 414 | |
350 415 o | 5: 45396c49d53b public 'B'
351 416 | |
352 417 o | 4: ae36e8e3dfd7 public 'E'
353 418 | |
354 419 o | 3: 46b37eabc604 public 'D'
355 420 | |
356 421 | o 2: 965c486023db secret 'C'
357 422 | |
358 423 | o 1: 27547f69f254 public 'B'
359 424 |/
360 425 o 0: 4a2df7238c3b public 'A'
361 426
362 427 $ hg rebase --continue
363 428 already rebased 2:965c486023db "C" as 401ccec5e39f
364 429 rebasing 6:a0b2430ebfb8 "F"
365 430 saved backup bundle to $TESTTMP/hook-pretxncommit/.hg/strip-backup/965c486023db-aa6250e7-rebase.hg
366 431 $ hg tglogp
367 432 @ 6: 6e92a149ac6b secret 'F'
368 433 |
369 434 o 5: 401ccec5e39f secret 'C'
370 435 |
371 436 o 4: 45396c49d53b public 'B'
372 437 |
373 438 o 3: ae36e8e3dfd7 public 'E'
374 439 |
375 440 o 2: 46b37eabc604 public 'D'
376 441 |
377 442 | o 1: 27547f69f254 public 'B'
378 443 |/
379 444 o 0: 4a2df7238c3b public 'A'
380 445
381 446 $ cd ..
382 447
383 448 (pretxnclose version)
384 449
385 450 $ cp -R a3 hook-pretxnclose
386 451 $ cd hook-pretxnclose
387 452 $ hg rebase --source 2 --dest 5 --tool internal:other --config 'hooks.pretxnclose=hg log -r tip | grep "summary: C"'
388 453 rebasing 2:965c486023db "C"
389 454 summary: C
390 455 rebasing 6:a0b2430ebfb8 "F" (tip)
391 456 transaction abort!
392 457 rollback completed
393 458 abort: pretxnclose hook exited with status 1
394 459 [255]
395 460 $ hg tglogp
396 461 @ 7: 401ccec5e39f secret 'C'
397 462 |
398 463 | o 6: a0b2430ebfb8 secret 'F'
399 464 | |
400 465 o | 5: 45396c49d53b public 'B'
401 466 | |
402 467 o | 4: ae36e8e3dfd7 public 'E'
403 468 | |
404 469 o | 3: 46b37eabc604 public 'D'
405 470 | |
406 471 | o 2: 965c486023db secret 'C'
407 472 | |
408 473 | o 1: 27547f69f254 public 'B'
409 474 |/
410 475 o 0: 4a2df7238c3b public 'A'
411 476
412 477 $ hg rebase --continue
413 478 already rebased 2:965c486023db "C" as 401ccec5e39f
414 479 rebasing 6:a0b2430ebfb8 "F"
415 480 saved backup bundle to $TESTTMP/hook-pretxnclose/.hg/strip-backup/965c486023db-aa6250e7-rebase.hg
416 481 $ hg tglogp
417 482 @ 6: 6e92a149ac6b secret 'F'
418 483 |
419 484 o 5: 401ccec5e39f secret 'C'
420 485 |
421 486 o 4: 45396c49d53b public 'B'
422 487 |
423 488 o 3: ae36e8e3dfd7 public 'E'
424 489 |
425 490 o 2: 46b37eabc604 public 'D'
426 491 |
427 492 | o 1: 27547f69f254 public 'B'
428 493 |/
429 494 o 0: 4a2df7238c3b public 'A'
430 495
431 496 $ cd ..
432 497
433 498 Make sure merge state is cleaned up after a no-op rebase merge (issue5494)
434 499 $ hg init repo
435 500 $ cd repo
436 501 $ echo a > a
437 502 $ hg commit -qAm base
438 503 $ echo b >> a
439 504 $ hg commit -qm b
440 505 $ hg up '.^'
441 506 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
442 507 $ echo c >> a
443 508 $ hg commit -qm c
444 509 $ hg rebase -s 1 -d 2 --noninteractive
445 510 rebasing 1:fdaca8533b86 "b"
446 511 merging a
447 512 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
448 513 unresolved conflicts (see hg resolve, then hg rebase --continue)
449 514 [1]
450 515 $ echo a > a
451 516 $ echo c >> a
452 517 $ hg resolve --mark a
453 518 (no more unresolved files)
454 519 continue: hg rebase --continue
455 520 $ hg rebase --continue
456 521 rebasing 1:fdaca8533b86 "b"
457 522 note: not rebasing 1:fdaca8533b86 "b", its destination already has all its changes
458 523 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/fdaca8533b86-7fd70513-rebase.hg
459 524 $ hg resolve --list
460 525 $ test -d .hg/merge
461 526 [1]
462 527 Now try again with --collapse
463 528 $ hg unbundle -q .hg/strip-backup/fdaca8533b86-7fd70513-rebase.hg
464 529 $ hg rebase -s 2 -d 1 --noninteractive --collapse
465 530 rebasing 2:fdaca8533b86 "b" (tip)
466 531 merging a
467 532 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
468 533 unresolved conflicts (see hg resolve, then hg rebase --continue)
469 534 [1]
470 535 $ echo a > a
471 536 $ echo c >> a
472 537 $ hg resolve --mark a
473 538 (no more unresolved files)
474 539 continue: hg rebase --continue
475 540 $ hg rebase --continue
476 541 rebasing 2:fdaca8533b86 "b" (tip)
477 542 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/fdaca8533b86-7fd70513-rebase.hg
478 543 $ hg resolve --list
479 544 $ test -d .hg/merge
480 545 [1]
General Comments 0
You need to be logged in to leave comments. Login now