##// END OF EJS Templates
test-strip: make test compatible with chg...
Saurabh Singh -
r34454:40b6d25e default
parent child Browse files
Show More
@@ -1,1122 +1,1128 b''
1 1 $ echo "[format]" >> $HGRCPATH
2 2 $ echo "usegeneraldelta=yes" >> $HGRCPATH
3 3 $ echo "[extensions]" >> $HGRCPATH
4 4 $ echo "strip=" >> $HGRCPATH
5 5 $ echo "drawdag=$TESTDIR/drawdag.py" >> $HGRCPATH
6 6
7 7 $ restore() {
8 8 > hg unbundle -q .hg/strip-backup/*
9 9 > rm .hg/strip-backup/*
10 10 > }
11 11 $ teststrip() {
12 12 > hg up -C $1
13 13 > echo % before update $1, strip $2
14 14 > hg parents
15 15 > hg --traceback strip $2
16 16 > echo % after update $1, strip $2
17 17 > hg parents
18 18 > restore
19 19 > }
20 20
21 21 $ hg init test
22 22 $ cd test
23 23
24 24 $ echo foo > bar
25 25 $ hg ci -Ama
26 26 adding bar
27 27
28 28 $ echo more >> bar
29 29 $ hg ci -Amb
30 30
31 31 $ echo blah >> bar
32 32 $ hg ci -Amc
33 33
34 34 $ hg up 1
35 35 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
36 36 $ echo blah >> bar
37 37 $ hg ci -Amd
38 38 created new head
39 39
40 40 $ echo final >> bar
41 41 $ hg ci -Ame
42 42
43 43 $ hg log
44 44 changeset: 4:443431ffac4f
45 45 tag: tip
46 46 user: test
47 47 date: Thu Jan 01 00:00:00 1970 +0000
48 48 summary: e
49 49
50 50 changeset: 3:65bd5f99a4a3
51 51 parent: 1:ef3a871183d7
52 52 user: test
53 53 date: Thu Jan 01 00:00:00 1970 +0000
54 54 summary: d
55 55
56 56 changeset: 2:264128213d29
57 57 user: test
58 58 date: Thu Jan 01 00:00:00 1970 +0000
59 59 summary: c
60 60
61 61 changeset: 1:ef3a871183d7
62 62 user: test
63 63 date: Thu Jan 01 00:00:00 1970 +0000
64 64 summary: b
65 65
66 66 changeset: 0:9ab35a2d17cb
67 67 user: test
68 68 date: Thu Jan 01 00:00:00 1970 +0000
69 69 summary: a
70 70
71 71
72 72 $ teststrip 4 4
73 73 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
74 74 % before update 4, strip 4
75 75 changeset: 4:443431ffac4f
76 76 tag: tip
77 77 user: test
78 78 date: Thu Jan 01 00:00:00 1970 +0000
79 79 summary: e
80 80
81 81 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
82 82 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
83 83 % after update 4, strip 4
84 84 changeset: 3:65bd5f99a4a3
85 85 tag: tip
86 86 parent: 1:ef3a871183d7
87 87 user: test
88 88 date: Thu Jan 01 00:00:00 1970 +0000
89 89 summary: d
90 90
91 91 $ teststrip 4 3
92 92 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
93 93 % before update 4, strip 3
94 94 changeset: 4:443431ffac4f
95 95 tag: tip
96 96 user: test
97 97 date: Thu Jan 01 00:00:00 1970 +0000
98 98 summary: e
99 99
100 100 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
101 101 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
102 102 % after update 4, strip 3
103 103 changeset: 1:ef3a871183d7
104 104 user: test
105 105 date: Thu Jan 01 00:00:00 1970 +0000
106 106 summary: b
107 107
108 108 $ teststrip 1 4
109 109 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
110 110 % before update 1, strip 4
111 111 changeset: 1:ef3a871183d7
112 112 user: test
113 113 date: Thu Jan 01 00:00:00 1970 +0000
114 114 summary: b
115 115
116 116 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
117 117 % after update 1, strip 4
118 118 changeset: 1:ef3a871183d7
119 119 user: test
120 120 date: Thu Jan 01 00:00:00 1970 +0000
121 121 summary: b
122 122
123 123 $ teststrip 4 2
124 124 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
125 125 % before update 4, strip 2
126 126 changeset: 4:443431ffac4f
127 127 tag: tip
128 128 user: test
129 129 date: Thu Jan 01 00:00:00 1970 +0000
130 130 summary: e
131 131
132 132 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
133 133 % after update 4, strip 2
134 134 changeset: 3:443431ffac4f
135 135 tag: tip
136 136 user: test
137 137 date: Thu Jan 01 00:00:00 1970 +0000
138 138 summary: e
139 139
140 140 $ teststrip 4 1
141 141 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
142 142 % before update 4, strip 1
143 143 changeset: 4:264128213d29
144 144 tag: tip
145 145 parent: 1:ef3a871183d7
146 146 user: test
147 147 date: Thu Jan 01 00:00:00 1970 +0000
148 148 summary: c
149 149
150 150 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
151 151 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
152 152 % after update 4, strip 1
153 153 changeset: 0:9ab35a2d17cb
154 154 tag: tip
155 155 user: test
156 156 date: Thu Jan 01 00:00:00 1970 +0000
157 157 summary: a
158 158
159 159 $ teststrip null 4
160 160 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
161 161 % before update null, strip 4
162 162 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
163 163 % after update null, strip 4
164 164
165 165 $ hg log
166 166 changeset: 4:264128213d29
167 167 tag: tip
168 168 parent: 1:ef3a871183d7
169 169 user: test
170 170 date: Thu Jan 01 00:00:00 1970 +0000
171 171 summary: c
172 172
173 173 changeset: 3:443431ffac4f
174 174 user: test
175 175 date: Thu Jan 01 00:00:00 1970 +0000
176 176 summary: e
177 177
178 178 changeset: 2:65bd5f99a4a3
179 179 user: test
180 180 date: Thu Jan 01 00:00:00 1970 +0000
181 181 summary: d
182 182
183 183 changeset: 1:ef3a871183d7
184 184 user: test
185 185 date: Thu Jan 01 00:00:00 1970 +0000
186 186 summary: b
187 187
188 188 changeset: 0:9ab35a2d17cb
189 189 user: test
190 190 date: Thu Jan 01 00:00:00 1970 +0000
191 191 summary: a
192 192
193 193 $ hg up -C 4
194 194 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
195 195 $ hg parents
196 196 changeset: 4:264128213d29
197 197 tag: tip
198 198 parent: 1:ef3a871183d7
199 199 user: test
200 200 date: Thu Jan 01 00:00:00 1970 +0000
201 201 summary: c
202 202
203 203
204 204 $ hg --traceback strip 4
205 205 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
206 206 saved backup bundle to $TESTTMP/test/.hg/strip-backup/264128213d29-0b39d6bf-backup.hg (glob)
207 207 $ hg parents
208 208 changeset: 1:ef3a871183d7
209 209 user: test
210 210 date: Thu Jan 01 00:00:00 1970 +0000
211 211 summary: b
212 212
213 213 $ hg debugbundle .hg/strip-backup/*
214 214 Stream params: {Compression: BZ}
215 215 changegroup -- {nbchanges: 1, version: 02}
216 216 264128213d290d868c54642d13aeaa3675551a78
217 217 phase-heads -- {}
218 218 264128213d290d868c54642d13aeaa3675551a78 draft
219 219 $ hg pull .hg/strip-backup/*
220 220 pulling from .hg/strip-backup/264128213d29-0b39d6bf-backup.hg
221 221 searching for changes
222 222 adding changesets
223 223 adding manifests
224 224 adding file changes
225 225 added 1 changesets with 0 changes to 0 files (+1 heads)
226 226 (run 'hg heads' to see heads, 'hg merge' to merge)
227 227 $ rm .hg/strip-backup/*
228 228 $ hg log --graph
229 229 o changeset: 4:264128213d29
230 230 | tag: tip
231 231 | parent: 1:ef3a871183d7
232 232 | user: test
233 233 | date: Thu Jan 01 00:00:00 1970 +0000
234 234 | summary: c
235 235 |
236 236 | o changeset: 3:443431ffac4f
237 237 | | user: test
238 238 | | date: Thu Jan 01 00:00:00 1970 +0000
239 239 | | summary: e
240 240 | |
241 241 | o changeset: 2:65bd5f99a4a3
242 242 |/ user: test
243 243 | date: Thu Jan 01 00:00:00 1970 +0000
244 244 | summary: d
245 245 |
246 246 @ changeset: 1:ef3a871183d7
247 247 | user: test
248 248 | date: Thu Jan 01 00:00:00 1970 +0000
249 249 | summary: b
250 250 |
251 251 o changeset: 0:9ab35a2d17cb
252 252 user: test
253 253 date: Thu Jan 01 00:00:00 1970 +0000
254 254 summary: a
255 255
256 256 $ hg up -C 2
257 257 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
258 258 $ hg merge 4
259 259 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
260 260 (branch merge, don't forget to commit)
261 261
262 262 before strip of merge parent
263 263
264 264 $ hg parents
265 265 changeset: 2:65bd5f99a4a3
266 266 user: test
267 267 date: Thu Jan 01 00:00:00 1970 +0000
268 268 summary: d
269 269
270 270 changeset: 4:264128213d29
271 271 tag: tip
272 272 parent: 1:ef3a871183d7
273 273 user: test
274 274 date: Thu Jan 01 00:00:00 1970 +0000
275 275 summary: c
276 276
277 277 $ hg strip 4
278 278 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
279 279 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
280 280
281 281 after strip of merge parent
282 282
283 283 $ hg parents
284 284 changeset: 1:ef3a871183d7
285 285 user: test
286 286 date: Thu Jan 01 00:00:00 1970 +0000
287 287 summary: b
288 288
289 289 $ restore
290 290
291 291 $ hg up
292 292 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
293 293 updated to "264128213d29: c"
294 294 1 other heads for branch "default"
295 295 $ hg log -G
296 296 @ changeset: 4:264128213d29
297 297 | tag: tip
298 298 | parent: 1:ef3a871183d7
299 299 | user: test
300 300 | date: Thu Jan 01 00:00:00 1970 +0000
301 301 | summary: c
302 302 |
303 303 | o changeset: 3:443431ffac4f
304 304 | | user: test
305 305 | | date: Thu Jan 01 00:00:00 1970 +0000
306 306 | | summary: e
307 307 | |
308 308 | o changeset: 2:65bd5f99a4a3
309 309 |/ user: test
310 310 | date: Thu Jan 01 00:00:00 1970 +0000
311 311 | summary: d
312 312 |
313 313 o changeset: 1:ef3a871183d7
314 314 | user: test
315 315 | date: Thu Jan 01 00:00:00 1970 +0000
316 316 | summary: b
317 317 |
318 318 o changeset: 0:9ab35a2d17cb
319 319 user: test
320 320 date: Thu Jan 01 00:00:00 1970 +0000
321 321 summary: a
322 322
323 323
324 324 2 is parent of 3, only one strip should happen
325 325
326 326 $ hg strip "roots(2)" 3
327 327 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
328 328 $ hg log -G
329 329 @ changeset: 2:264128213d29
330 330 | tag: tip
331 331 | user: test
332 332 | date: Thu Jan 01 00:00:00 1970 +0000
333 333 | summary: c
334 334 |
335 335 o changeset: 1:ef3a871183d7
336 336 | user: test
337 337 | date: Thu Jan 01 00:00:00 1970 +0000
338 338 | summary: b
339 339 |
340 340 o changeset: 0:9ab35a2d17cb
341 341 user: test
342 342 date: Thu Jan 01 00:00:00 1970 +0000
343 343 summary: a
344 344
345 345 $ restore
346 346 $ hg log -G
347 347 o changeset: 4:443431ffac4f
348 348 | tag: tip
349 349 | user: test
350 350 | date: Thu Jan 01 00:00:00 1970 +0000
351 351 | summary: e
352 352 |
353 353 o changeset: 3:65bd5f99a4a3
354 354 | parent: 1:ef3a871183d7
355 355 | user: test
356 356 | date: Thu Jan 01 00:00:00 1970 +0000
357 357 | summary: d
358 358 |
359 359 | @ changeset: 2:264128213d29
360 360 |/ user: test
361 361 | date: Thu Jan 01 00:00:00 1970 +0000
362 362 | summary: c
363 363 |
364 364 o changeset: 1:ef3a871183d7
365 365 | user: test
366 366 | date: Thu Jan 01 00:00:00 1970 +0000
367 367 | summary: b
368 368 |
369 369 o changeset: 0:9ab35a2d17cb
370 370 user: test
371 371 date: Thu Jan 01 00:00:00 1970 +0000
372 372 summary: a
373 373
374 374 Failed hook while applying "saveheads" bundle.
375 375
376 376 $ hg strip 2 --config hooks.pretxnchangegroup.bad=false
377 377 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
378 378 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
379 379 transaction abort!
380 380 rollback completed
381 381 strip failed, backup bundle stored in '$TESTTMP/test/.hg/strip-backup/*-backup.hg' (glob)
382 382 strip failed, unrecovered changes stored in '$TESTTMP/test/.hg/strip-backup/*-temp.hg' (glob)
383 383 (fix the problem, then recover the changesets with "hg unbundle '$TESTTMP/test/.hg/strip-backup/*-temp.hg'") (glob)
384 384 abort: pretxnchangegroup.bad hook exited with status 1
385 385 [255]
386 386 $ restore
387 387 $ hg log -G
388 388 o changeset: 4:443431ffac4f
389 389 | tag: tip
390 390 | user: test
391 391 | date: Thu Jan 01 00:00:00 1970 +0000
392 392 | summary: e
393 393 |
394 394 o changeset: 3:65bd5f99a4a3
395 395 | parent: 1:ef3a871183d7
396 396 | user: test
397 397 | date: Thu Jan 01 00:00:00 1970 +0000
398 398 | summary: d
399 399 |
400 400 | o changeset: 2:264128213d29
401 401 |/ user: test
402 402 | date: Thu Jan 01 00:00:00 1970 +0000
403 403 | summary: c
404 404 |
405 405 @ changeset: 1:ef3a871183d7
406 406 | user: test
407 407 | date: Thu Jan 01 00:00:00 1970 +0000
408 408 | summary: b
409 409 |
410 410 o changeset: 0:9ab35a2d17cb
411 411 user: test
412 412 date: Thu Jan 01 00:00:00 1970 +0000
413 413 summary: a
414 414
415 415
416 416 2 different branches: 2 strips
417 417
418 418 $ hg strip 2 4
419 419 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
420 420 $ hg log -G
421 421 o changeset: 2:65bd5f99a4a3
422 422 | tag: tip
423 423 | user: test
424 424 | date: Thu Jan 01 00:00:00 1970 +0000
425 425 | summary: d
426 426 |
427 427 @ changeset: 1:ef3a871183d7
428 428 | user: test
429 429 | date: Thu Jan 01 00:00:00 1970 +0000
430 430 | summary: b
431 431 |
432 432 o changeset: 0:9ab35a2d17cb
433 433 user: test
434 434 date: Thu Jan 01 00:00:00 1970 +0000
435 435 summary: a
436 436
437 437 $ restore
438 438
439 439 2 different branches and a common ancestor: 1 strip
440 440
441 441 $ hg strip 1 "2|4"
442 442 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
443 443 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
444 444 $ restore
445 445
446 446 verify fncache is kept up-to-date
447 447
448 448 $ touch a
449 449 $ hg ci -qAm a
450 450 $ cat .hg/store/fncache | sort
451 451 data/a.i
452 452 data/bar.i
453 453 $ hg strip tip
454 454 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
455 455 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
456 456 $ cat .hg/store/fncache
457 457 data/bar.i
458 458
459 459 stripping an empty revset
460 460
461 461 $ hg strip "1 and not 1"
462 462 abort: empty revision set
463 463 [255]
464 464
465 465 remove branchy history for qimport tests
466 466
467 467 $ hg strip 3
468 468 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
469 469
470 470
471 471 strip of applied mq should cleanup status file
472 472
473 473 $ echo "mq=" >> $HGRCPATH
474 474 $ hg up -C 3
475 475 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
476 476 $ echo fooagain >> bar
477 477 $ hg ci -mf
478 478 $ hg qimport -r tip:2
479 479
480 480 applied patches before strip
481 481
482 482 $ hg qapplied
483 483 d
484 484 e
485 485 f
486 486
487 487 stripping revision in queue
488 488
489 489 $ hg strip 3
490 490 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
491 491 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
492 492
493 493 applied patches after stripping rev in queue
494 494
495 495 $ hg qapplied
496 496 d
497 497
498 498 stripping ancestor of queue
499 499
500 500 $ hg strip 1
501 501 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
502 502 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
503 503
504 504 applied patches after stripping ancestor of queue
505 505
506 506 $ hg qapplied
507 507
508 508 Verify strip protects against stripping wc parent when there are uncommitted mods
509 509
510 510 $ echo b > b
511 511 $ echo bb > bar
512 512 $ hg add b
513 513 $ hg ci -m 'b'
514 514 $ hg log --graph
515 515 @ changeset: 1:76dcf9fab855
516 516 | tag: tip
517 517 | user: test
518 518 | date: Thu Jan 01 00:00:00 1970 +0000
519 519 | summary: b
520 520 |
521 521 o changeset: 0:9ab35a2d17cb
522 522 user: test
523 523 date: Thu Jan 01 00:00:00 1970 +0000
524 524 summary: a
525 525
526 526 $ hg up 0
527 527 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
528 528 $ echo c > bar
529 529 $ hg up -t false
530 530 merging bar
531 531 merging bar failed!
532 532 1 files updated, 0 files merged, 0 files removed, 1 files unresolved
533 533 use 'hg resolve' to retry unresolved file merges
534 534 [1]
535 535 $ hg sum
536 536 parent: 1:76dcf9fab855 tip
537 537 b
538 538 branch: default
539 539 commit: 1 modified, 1 unknown, 1 unresolved
540 540 update: (current)
541 541 phases: 2 draft
542 542 mq: 3 unapplied
543 543
544 544 $ echo c > b
545 545 $ hg strip tip
546 546 abort: local changes found
547 547 [255]
548 548 $ hg strip tip --keep
549 549 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
550 550 $ hg log --graph
551 551 @ changeset: 0:9ab35a2d17cb
552 552 tag: tip
553 553 user: test
554 554 date: Thu Jan 01 00:00:00 1970 +0000
555 555 summary: a
556 556
557 557 $ hg status
558 558 M bar
559 559 ? b
560 560 ? bar.orig
561 561
562 562 $ rm bar.orig
563 563 $ hg sum
564 564 parent: 0:9ab35a2d17cb tip
565 565 a
566 566 branch: default
567 567 commit: 1 modified, 1 unknown
568 568 update: (current)
569 569 phases: 1 draft
570 570 mq: 3 unapplied
571 571
572 572 Strip adds, removes, modifies with --keep
573 573
574 574 $ touch b
575 575 $ hg add b
576 576 $ hg commit -mb
577 577 $ touch c
578 578
579 579 ... with a clean working dir
580 580
581 581 $ hg add c
582 582 $ hg rm bar
583 583 $ hg commit -mc
584 584 $ hg status
585 585 $ hg strip --keep tip
586 586 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
587 587 $ hg status
588 588 ! bar
589 589 ? c
590 590
591 591 ... with a dirty working dir
592 592
593 593 $ hg add c
594 594 $ hg rm bar
595 595 $ hg commit -mc
596 596 $ hg status
597 597 $ echo b > b
598 598 $ echo d > d
599 599 $ hg strip --keep tip
600 600 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
601 601 $ hg status
602 602 M b
603 603 ! bar
604 604 ? c
605 605 ? d
606 606
607 607 ... after updating the dirstate
608 608 $ hg add c
609 609 $ hg commit -mc
610 610 $ hg rm c
611 611 $ hg commit -mc
612 612 $ hg strip --keep '.^' -q
613 613 $ cd ..
614 614
615 615 stripping many nodes on a complex graph (issue3299)
616 616
617 617 $ hg init issue3299
618 618 $ cd issue3299
619 619 $ hg debugbuilddag '@a.:a@b.:b.:x<a@a.:a<b@b.:b<a@a.:a'
620 620 $ hg strip 'not ancestors(x)'
621 621 saved backup bundle to $TESTTMP/issue3299/.hg/strip-backup/*-backup.hg (glob)
622 622
623 623 test hg strip -B bookmark
624 624
625 625 $ cd ..
626 626 $ hg init bookmarks
627 627 $ cd bookmarks
628 628 $ hg debugbuilddag '..<2.*1/2:m<2+3:c<m+3:a<2.:b<m+2:d<2.:e<m+1:f'
629 629 $ hg bookmark -r 'a' 'todelete'
630 630 $ hg bookmark -r 'b' 'B'
631 631 $ hg bookmark -r 'b' 'nostrip'
632 632 $ hg bookmark -r 'c' 'delete'
633 633 $ hg bookmark -r 'd' 'multipledelete1'
634 634 $ hg bookmark -r 'e' 'multipledelete2'
635 635 $ hg bookmark -r 'f' 'singlenode1'
636 636 $ hg bookmark -r 'f' 'singlenode2'
637 637 $ hg up -C todelete
638 638 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
639 639 (activating bookmark todelete)
640 640 $ hg strip -B nostrip
641 641 bookmark 'nostrip' deleted
642 642 abort: empty revision set
643 643 [255]
644 644 $ hg strip -B todelete
645 645 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
646 646 saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/*-backup.hg (glob)
647 647 bookmark 'todelete' deleted
648 648 $ hg id -ir dcbb326fdec2
649 649 abort: unknown revision 'dcbb326fdec2'!
650 650 [255]
651 651 $ hg id -ir d62d843c9a01
652 652 d62d843c9a01
653 653 $ hg bookmarks
654 654 B 9:ff43616e5d0f
655 655 delete 6:2702dd0c91e7
656 656 multipledelete1 11:e46a4836065c
657 657 multipledelete2 12:b4594d867745
658 658 singlenode1 13:43227190fef8
659 659 singlenode2 13:43227190fef8
660 660 $ hg strip -B multipledelete1 -B multipledelete2
661 661 saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/e46a4836065c-89ec65c2-backup.hg (glob)
662 662 bookmark 'multipledelete1' deleted
663 663 bookmark 'multipledelete2' deleted
664 664 $ hg id -ir e46a4836065c
665 665 abort: unknown revision 'e46a4836065c'!
666 666 [255]
667 667 $ hg id -ir b4594d867745
668 668 abort: unknown revision 'b4594d867745'!
669 669 [255]
670 670 $ hg strip -B singlenode1 -B singlenode2
671 671 saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/43227190fef8-8da858f2-backup.hg (glob)
672 672 bookmark 'singlenode1' deleted
673 673 bookmark 'singlenode2' deleted
674 674 $ hg id -ir 43227190fef8
675 675 abort: unknown revision '43227190fef8'!
676 676 [255]
677 677 $ hg strip -B unknownbookmark
678 678 abort: bookmark 'unknownbookmark' not found
679 679 [255]
680 680 $ hg strip -B unknownbookmark1 -B unknownbookmark2
681 681 abort: bookmark 'unknownbookmark1,unknownbookmark2' not found
682 682 [255]
683 683 $ hg strip -B delete -B unknownbookmark
684 684 abort: bookmark 'unknownbookmark' not found
685 685 [255]
686 686 $ hg strip -B delete
687 687 saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/*-backup.hg (glob)
688 688 bookmark 'delete' deleted
689 689 $ hg id -ir 6:2702dd0c91e7
690 690 abort: unknown revision '2702dd0c91e7'!
691 691 [255]
692 692 $ hg update B
693 693 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
694 694 (activating bookmark B)
695 695 $ echo a > a
696 696 $ hg add a
697 697 $ hg strip -B B
698 698 abort: local changes found
699 699 [255]
700 700 $ hg bookmarks
701 701 * B 6:ff43616e5d0f
702 702
703 703 Make sure no one adds back a -b option:
704 704
705 705 $ hg strip -b tip
706 706 hg strip: option -b not recognized
707 707 hg strip [-k] [-f] [-B bookmark] [-r] REV...
708 708
709 709 strip changesets and all their descendants from the repository
710 710
711 711 (use 'hg help -e strip' to show help for the strip extension)
712 712
713 713 options ([+] can be repeated):
714 714
715 715 -r --rev REV [+] strip specified revision (optional, can specify
716 716 revisions without this option)
717 717 -f --force force removal of changesets, discard uncommitted
718 718 changes (no backup)
719 719 --no-backup no backups
720 720 -k --keep do not modify working directory during strip
721 721 -B --bookmark VALUE [+] remove revs only reachable from given bookmark
722 722 --mq operate on patch repository
723 723
724 724 (use 'hg strip -h' to show more help)
725 725 [255]
726 726
727 727 $ cd ..
728 728
729 729 Verify bundles don't get overwritten:
730 730
731 731 $ hg init doublebundle
732 732 $ cd doublebundle
733 733 $ touch a
734 734 $ hg commit -Aqm a
735 735 $ touch b
736 736 $ hg commit -Aqm b
737 737 $ hg strip -r 0
738 738 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
739 739 saved backup bundle to $TESTTMP/doublebundle/.hg/strip-backup/3903775176ed-e68910bd-backup.hg (glob)
740 740 $ ls .hg/strip-backup
741 741 3903775176ed-e68910bd-backup.hg
742 742 $ hg pull -q -r 3903775176ed .hg/strip-backup/3903775176ed-e68910bd-backup.hg
743 743 $ hg strip -r 0
744 744 saved backup bundle to $TESTTMP/doublebundle/.hg/strip-backup/3903775176ed-54390173-backup.hg (glob)
745 745 $ ls .hg/strip-backup
746 746 3903775176ed-54390173-backup.hg
747 747 3903775176ed-e68910bd-backup.hg
748 748 $ cd ..
749 749
750 750 Test that we only bundle the stripped changesets (issue4736)
751 751 ------------------------------------------------------------
752 752
753 753 initialization (previous repo is empty anyway)
754 754
755 755 $ hg init issue4736
756 756 $ cd issue4736
757 757 $ echo a > a
758 758 $ hg add a
759 759 $ hg commit -m commitA
760 760 $ echo b > b
761 761 $ hg add b
762 762 $ hg commit -m commitB
763 763 $ echo c > c
764 764 $ hg add c
765 765 $ hg commit -m commitC
766 766 $ hg up 'desc(commitB)'
767 767 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
768 768 $ echo d > d
769 769 $ hg add d
770 770 $ hg commit -m commitD
771 771 created new head
772 772 $ hg up 'desc(commitC)'
773 773 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
774 774 $ hg merge 'desc(commitD)'
775 775 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
776 776 (branch merge, don't forget to commit)
777 777 $ hg ci -m 'mergeCD'
778 778 $ hg log -G
779 779 @ changeset: 4:d8db9d137221
780 780 |\ tag: tip
781 781 | | parent: 2:5c51d8d6557d
782 782 | | parent: 3:6625a5168474
783 783 | | user: test
784 784 | | date: Thu Jan 01 00:00:00 1970 +0000
785 785 | | summary: mergeCD
786 786 | |
787 787 | o changeset: 3:6625a5168474
788 788 | | parent: 1:eca11cf91c71
789 789 | | user: test
790 790 | | date: Thu Jan 01 00:00:00 1970 +0000
791 791 | | summary: commitD
792 792 | |
793 793 o | changeset: 2:5c51d8d6557d
794 794 |/ user: test
795 795 | date: Thu Jan 01 00:00:00 1970 +0000
796 796 | summary: commitC
797 797 |
798 798 o changeset: 1:eca11cf91c71
799 799 | user: test
800 800 | date: Thu Jan 01 00:00:00 1970 +0000
801 801 | summary: commitB
802 802 |
803 803 o changeset: 0:105141ef12d0
804 804 user: test
805 805 date: Thu Jan 01 00:00:00 1970 +0000
806 806 summary: commitA
807 807
808 808
809 809 Check bundle behavior:
810 810
811 811 $ hg bundle -r 'desc(mergeCD)' --base 'desc(commitC)' ../issue4736.hg
812 812 2 changesets found
813 813 $ hg log -r 'bundle()' -R ../issue4736.hg
814 814 changeset: 3:6625a5168474
815 815 parent: 1:eca11cf91c71
816 816 user: test
817 817 date: Thu Jan 01 00:00:00 1970 +0000
818 818 summary: commitD
819 819
820 820 changeset: 4:d8db9d137221
821 821 tag: tip
822 822 parent: 2:5c51d8d6557d
823 823 parent: 3:6625a5168474
824 824 user: test
825 825 date: Thu Jan 01 00:00:00 1970 +0000
826 826 summary: mergeCD
827 827
828 828
829 829 check strip behavior
830 830
831 831 $ hg --config extensions.strip= strip 'desc(commitD)' --debug
832 832 resolving manifests
833 833 branchmerge: False, force: True, partial: False
834 834 ancestor: d8db9d137221+, local: d8db9d137221+, remote: eca11cf91c71
835 835 c: other deleted -> r
836 836 removing c
837 837 d: other deleted -> r
838 838 removing d
839 839 starting 4 threads for background file closing (?)
840 840 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
841 841 2 changesets found
842 842 list of changesets:
843 843 6625a516847449b6f0fa3737b9ba56e9f0f3032c
844 844 d8db9d1372214336d2b5570f20ee468d2c72fa8b
845 845 bundle2-output-bundle: "HG20", (1 params) 2 parts total
846 846 bundle2-output-part: "changegroup" (params: 1 mandatory 1 advisory) streamed payload
847 847 bundle2-output-part: "phase-heads" 24 bytes payload
848 848 saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/6625a5168474-345bb43d-backup.hg (glob)
849 849 updating the branch cache
850 850 invalid branchheads cache (served): tip differs
851 851 truncating cache/rbc-revs-v1 to 24
852 852 $ hg log -G
853 853 o changeset: 2:5c51d8d6557d
854 854 | tag: tip
855 855 | user: test
856 856 | date: Thu Jan 01 00:00:00 1970 +0000
857 857 | summary: commitC
858 858 |
859 859 @ changeset: 1:eca11cf91c71
860 860 | user: test
861 861 | date: Thu Jan 01 00:00:00 1970 +0000
862 862 | summary: commitB
863 863 |
864 864 o changeset: 0:105141ef12d0
865 865 user: test
866 866 date: Thu Jan 01 00:00:00 1970 +0000
867 867 summary: commitA
868 868
869 869
870 870 strip backup content
871 871
872 872 $ hg log -r 'bundle()' -R .hg/strip-backup/6625a5168474-*-backup.hg
873 873 changeset: 3:6625a5168474
874 874 parent: 1:eca11cf91c71
875 875 user: test
876 876 date: Thu Jan 01 00:00:00 1970 +0000
877 877 summary: commitD
878 878
879 879 changeset: 4:d8db9d137221
880 880 tag: tip
881 881 parent: 2:5c51d8d6557d
882 882 parent: 3:6625a5168474
883 883 user: test
884 884 date: Thu Jan 01 00:00:00 1970 +0000
885 885 summary: mergeCD
886 886
887 887 Check that the phase cache is properly invalidated after a strip with bookmark.
888 888
889 889 $ cat > ../stripstalephasecache.py << EOF
890 890 > from mercurial import extensions, localrepo
891 891 > def transactioncallback(orig, repo, desc, *args, **kwargs):
892 892 > def test(transaction):
893 893 > # observe cache inconsistency
894 894 > try:
895 895 > [repo.changelog.node(r) for r in repo.revs("not public()")]
896 896 > except IndexError:
897 897 > repo.ui.status("Index error!\n")
898 898 > transaction = orig(repo, desc, *args, **kwargs)
899 899 > # warm up the phase cache
900 900 > list(repo.revs("not public()"))
901 901 > if desc != 'strip':
902 902 > transaction.addpostclose("phase invalidation test", test)
903 903 > return transaction
904 904 > def extsetup(ui):
905 905 > extensions.wrapfunction(localrepo.localrepository, "transaction",
906 906 > transactioncallback)
907 907 > EOF
908 908 $ hg up -C 2
909 909 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
910 910 $ echo k > k
911 911 $ hg add k
912 912 $ hg commit -m commitK
913 913 $ echo l > l
914 914 $ hg add l
915 915 $ hg commit -m commitL
916 916 $ hg book -r tip blah
917 917 $ hg strip ".^" --config extensions.crash=$TESTTMP/stripstalephasecache.py
918 918 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
919 919 saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/8f0b4384875c-4fa10deb-backup.hg (glob)
920 920 $ hg up -C 1
921 921 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
922 922
923 923 Error during post-close callback of the strip transaction
924 924 (They should be gracefully handled and reported)
925 925
926 926 $ cat > ../crashstrip.py << EOF
927 927 > from mercurial import error
928 928 > def reposetup(ui, repo):
929 929 > class crashstriprepo(repo.__class__):
930 930 > def transaction(self, desc, *args, **kwargs):
931 931 > tr = super(crashstriprepo, self).transaction(desc, *args, **kwargs)
932 932 > if desc == 'strip':
933 933 > def crash(tra): raise error.Abort('boom')
934 934 > tr.addpostclose('crash', crash)
935 935 > return tr
936 936 > repo.__class__ = crashstriprepo
937 937 > EOF
938 938 $ hg strip tip --config extensions.crash=$TESTTMP/crashstrip.py
939 939 saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/5c51d8d6557d-70daef06-backup.hg (glob)
940 940 strip failed, backup bundle stored in '$TESTTMP/issue4736/.hg/strip-backup/5c51d8d6557d-70daef06-backup.hg' (glob)
941 941 abort: boom
942 942 [255]
943 943
944 944 Use delayedstrip to strip inside a transaction
945 945
946 946 $ cd $TESTTMP
947 947 $ hg init delayedstrip
948 948 $ cd delayedstrip
949 949 $ hg debugdrawdag <<'EOS'
950 950 > D
951 951 > |
952 952 > C F H # Commit on top of "I",
953 953 > | |/| # Strip B+D+I+E+G+H+Z
954 954 > I B E G
955 955 > \|/
956 956 > A Z
957 957 > EOS
958 958 $ cp -R . ../scmutilcleanup
959 959
960 960 $ hg up -C I
961 961 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
962 962 $ echo 3 >> I
963 963 $ cat > $TESTTMP/delayedstrip.py <<EOF
964 964 > from __future__ import absolute_import
965 > from mercurial import commands, repair
966 > def reposetup(ui, repo):
965 > from mercurial import commands, registrar, repair
966 > cmdtable = {}
967 > command = registrar.command(cmdtable)
968 > @command('testdelayedstrip')
969 > def testdelayedstrip(ui, repo):
967 970 > def getnodes(expr):
968 971 > return [repo.changelog.node(r) for r in repo.revs(expr)]
969 972 > with repo.wlock():
970 973 > with repo.lock():
971 974 > with repo.transaction('delayedstrip'):
972 975 > repair.delayedstrip(ui, repo, getnodes('B+I+Z+D+E'), 'J')
973 976 > repair.delayedstrip(ui, repo, getnodes('G+H+Z'), 'I')
974 977 > commands.commit(ui, repo, message='J', date='0 0')
975 978 > EOF
976 $ hg log -r . -T '\n' --config extensions.t=$TESTTMP/delayedstrip.py
979 $ hg testdelayedstrip --config extensions.t=$TESTTMP/delayedstrip.py
977 980 warning: orphaned descendants detected, not stripping 08ebfeb61bac, 112478962961, 7fb047a69f22
978 981 saved backup bundle to $TESTTMP/delayedstrip/.hg/strip-backup/f585351a92f8-17475721-I.hg (glob)
979
982
980 983 $ hg log -G -T '{rev}:{node|short} {desc}' -r 'sort(all(), topo)'
981 984 @ 6:2f2d51af6205 J
982 985 |
983 986 o 3:08ebfeb61bac I
984 987 |
985 988 | o 5:64a8289d2492 F
986 989 | |
987 990 | o 2:7fb047a69f22 E
988 991 |/
989 992 | o 4:26805aba1e60 C
990 993 | |
991 994 | o 1:112478962961 B
992 995 |/
993 996 o 0:426bada5c675 A
994 997
995 998 Test high-level scmutil.cleanupnodes API
996 999
997 1000 $ cd $TESTTMP/scmutilcleanup
998 1001 $ hg debugdrawdag <<'EOS'
999 1002 > D2 F2 G2 # D2, F2, G2 are replacements for D, F, G
1000 1003 > | | |
1001 1004 > C H G
1002 1005 > EOS
1003 1006 $ for i in B C D F G I Z; do
1004 1007 > hg bookmark -i -r $i b-$i
1005 1008 > done
1006 1009 $ hg bookmark -i -r E 'b-F@divergent1'
1007 1010 $ hg bookmark -i -r H 'b-F@divergent2'
1008 1011 $ hg bookmark -i -r G 'b-F@divergent3'
1009 1012 $ cp -R . ../scmutilcleanup.obsstore
1010 1013
1011 1014 $ cat > $TESTTMP/scmutilcleanup.py <<EOF
1012 > from mercurial import scmutil
1013 > def reposetup(ui, repo):
1015 > from mercurial import registrar, scmutil
1016 > cmdtable = {}
1017 > command = registrar.command(cmdtable)
1018 > @command('testnodescleanup')
1019 > def testnodescleanup(ui, repo):
1014 1020 > def nodes(expr):
1015 1021 > return [repo.changelog.node(r) for r in repo.revs(expr)]
1016 1022 > def node(expr):
1017 1023 > return nodes(expr)[0]
1018 1024 > with repo.wlock():
1019 1025 > with repo.lock():
1020 1026 > with repo.transaction('delayedstrip'):
1021 1027 > mapping = {node('F'): [node('F2')],
1022 1028 > node('D'): [node('D2')],
1023 1029 > node('G'): [node('G2')]}
1024 1030 > scmutil.cleanupnodes(repo, mapping, 'replace')
1025 1031 > scmutil.cleanupnodes(repo, nodes('((B::)+I+Z)-D2'), 'replace')
1026 1032 > EOF
1027 $ hg log -r . -T '\n' --config extensions.t=$TESTTMP/scmutilcleanup.py
1033 $ hg testnodescleanup --config extensions.t=$TESTTMP/scmutilcleanup.py
1028 1034 warning: orphaned descendants detected, not stripping 112478962961, 1fc8102cda62, 26805aba1e60
1029 1035 saved backup bundle to $TESTTMP/scmutilcleanup/.hg/strip-backup/f585351a92f8-73fb7c03-replace.hg (glob)
1030
1036
1031 1037 $ hg log -G -T '{rev}:{node|short} {desc} {bookmarks}' -r 'sort(all(), topo)'
1032 1038 o 8:1473d4b996d1 G2 b-F@divergent3 b-G
1033 1039 |
1034 1040 | o 7:d11b3456a873 F2 b-F
1035 1041 | |
1036 1042 | o 5:5cb05ba470a7 H
1037 1043 |/|
1038 1044 | o 3:7fb047a69f22 E b-F@divergent1
1039 1045 | |
1040 1046 | | o 6:7c78f703e465 D2 b-D
1041 1047 | | |
1042 1048 | | o 4:26805aba1e60 C
1043 1049 | | |
1044 1050 | | o 2:112478962961 B
1045 1051 | |/
1046 1052 o | 1:1fc8102cda62 G
1047 1053 /
1048 1054 o 0:426bada5c675 A b-B b-C b-I
1049 1055
1050 1056 $ hg bookmark
1051 1057 b-B 0:426bada5c675
1052 1058 b-C 0:426bada5c675
1053 1059 b-D 6:7c78f703e465
1054 1060 b-F 7:d11b3456a873
1055 1061 b-F@divergent1 3:7fb047a69f22
1056 1062 b-F@divergent3 8:1473d4b996d1
1057 1063 b-G 8:1473d4b996d1
1058 1064 b-I 0:426bada5c675
1059 1065 b-Z -1:000000000000
1060 1066
1061 1067 Test the above using obsstore "by the way". Not directly related to strip, but
1062 1068 we have reusable code here
1063 1069
1064 1070 $ cd $TESTTMP/scmutilcleanup.obsstore
1065 1071 $ cat >> .hg/hgrc <<EOF
1066 1072 > [experimental]
1067 1073 > stabilization=all
1068 1074 > stabilization.track-operation=1
1069 1075 > EOF
1070 1076
1071 $ hg log -r . -T '\n' --config extensions.t=$TESTTMP/scmutilcleanup.py
1072
1077 $ hg testnodescleanup --config extensions.t=$TESTTMP/scmutilcleanup.py
1078
1073 1079 $ rm .hg/localtags
1074 1080 $ hg log -G -T '{rev}:{node|short} {desc} {bookmarks}' -r 'sort(all(), topo)'
1075 1081 o 12:1473d4b996d1 G2 b-F@divergent3 b-G
1076 1082 |
1077 1083 | o 11:d11b3456a873 F2 b-F
1078 1084 | |
1079 1085 | o 8:5cb05ba470a7 H
1080 1086 |/|
1081 1087 | o 4:7fb047a69f22 E b-F@divergent1
1082 1088 | |
1083 1089 | | o 10:7c78f703e465 D2 b-D
1084 1090 | | |
1085 1091 | | x 6:26805aba1e60 C
1086 1092 | | |
1087 1093 | | x 3:112478962961 B
1088 1094 | |/
1089 1095 x | 1:1fc8102cda62 G
1090 1096 /
1091 1097 o 0:426bada5c675 A b-B b-C b-I
1092 1098
1093 1099 $ hg debugobsolete
1094 1100 1fc8102cda6204549f031015641606ccf5513ec3 1473d4b996d1d1b121de6b39fab6a04fbf9d873e 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'replace', 'user': 'test'}
1095 1101 64a8289d249234b9886244d379f15e6b650b28e3 d11b3456a873daec7c7bc53e5622e8df6d741bd2 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'replace', 'user': 'test'}
1096 1102 f585351a92f85104bff7c284233c338b10eb1df7 7c78f703e465d73102cc8780667ce269c5208a40 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'replace', 'user': 'test'}
1097 1103 48b9aae0607f43ff110d84e6883c151942add5ab 0 {0000000000000000000000000000000000000000} (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'replace', 'user': 'test'}
1098 1104 112478962961147124edd43549aedd1a335e44bf 0 {426bada5c67598ca65036d57d9e4b64b0c1ce7a0} (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'replace', 'user': 'test'}
1099 1105 08ebfeb61bac6e3f12079de774d285a0d6689eba 0 {426bada5c67598ca65036d57d9e4b64b0c1ce7a0} (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'replace', 'user': 'test'}
1100 1106 26805aba1e600a82e93661149f2313866a221a7b 0 {112478962961147124edd43549aedd1a335e44bf} (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'replace', 'user': 'test'}
1101 1107 $ cd ..
1102 1108
1103 1109 Test that obsmarkers are restored even when not using generaldelta
1104 1110
1105 1111 $ hg --config format.usegeneraldelta=no init issue5678
1106 1112 $ cd issue5678
1107 1113 $ cat >> .hg/hgrc <<EOF
1108 1114 > [experimental]
1109 1115 > evolution=all
1110 1116 > EOF
1111 1117 $ echo a > a
1112 1118 $ hg ci -Aqm a
1113 1119 $ hg ci --amend -m a2
1114 1120 $ hg debugobsolete
1115 1121 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b 489bac576828490c0bb8d45eac9e5e172e4ec0a8 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'test'}
1116 1122 $ hg strip .
1117 1123 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1118 1124 saved backup bundle to $TESTTMP/issue5678/.hg/strip-backup/489bac576828-bef27e14-backup.hg (glob)
1119 1125 $ hg unbundle -q .hg/strip-backup/*
1120 1126 $ hg debugobsolete
1121 1127 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b 489bac576828490c0bb8d45eac9e5e172e4ec0a8 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'amend', 'user': 'test'}
1122 1128 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now