##// END OF EJS Templates
tests: bytestring-ify all the adhoc extensions in test-strip.t...
Augie Fackler -
r35848:e689d8b2 default
parent child Browse files
Show More
@@ -1,1339 +1,1340 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
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 new changesets 264128213d29
227 227 (run 'hg heads' to see heads, 'hg merge' to merge)
228 228 $ rm .hg/strip-backup/*
229 229 $ hg log --graph
230 230 o changeset: 4:264128213d29
231 231 | tag: tip
232 232 | parent: 1:ef3a871183d7
233 233 | user: test
234 234 | date: Thu Jan 01 00:00:00 1970 +0000
235 235 | summary: c
236 236 |
237 237 | o changeset: 3:443431ffac4f
238 238 | | user: test
239 239 | | date: Thu Jan 01 00:00:00 1970 +0000
240 240 | | summary: e
241 241 | |
242 242 | o changeset: 2:65bd5f99a4a3
243 243 |/ user: test
244 244 | date: Thu Jan 01 00:00:00 1970 +0000
245 245 | summary: d
246 246 |
247 247 @ changeset: 1:ef3a871183d7
248 248 | user: test
249 249 | date: Thu Jan 01 00:00:00 1970 +0000
250 250 | summary: b
251 251 |
252 252 o changeset: 0:9ab35a2d17cb
253 253 user: test
254 254 date: Thu Jan 01 00:00:00 1970 +0000
255 255 summary: a
256 256
257 257 $ hg up -C 2
258 258 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
259 259 $ hg merge 4
260 260 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
261 261 (branch merge, don't forget to commit)
262 262
263 263 before strip of merge parent
264 264
265 265 $ hg parents
266 266 changeset: 2:65bd5f99a4a3
267 267 user: test
268 268 date: Thu Jan 01 00:00:00 1970 +0000
269 269 summary: d
270 270
271 271 changeset: 4:264128213d29
272 272 tag: tip
273 273 parent: 1:ef3a871183d7
274 274 user: test
275 275 date: Thu Jan 01 00:00:00 1970 +0000
276 276 summary: c
277 277
278 278 $ hg strip 4
279 279 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
280 280 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
281 281
282 282 after strip of merge parent
283 283
284 284 $ hg parents
285 285 changeset: 1:ef3a871183d7
286 286 user: test
287 287 date: Thu Jan 01 00:00:00 1970 +0000
288 288 summary: b
289 289
290 290 $ restore
291 291
292 292 $ hg up
293 293 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
294 294 updated to "264128213d29: c"
295 295 1 other heads for branch "default"
296 296 $ hg log -G
297 297 @ changeset: 4:264128213d29
298 298 | tag: tip
299 299 | parent: 1:ef3a871183d7
300 300 | user: test
301 301 | date: Thu Jan 01 00:00:00 1970 +0000
302 302 | summary: c
303 303 |
304 304 | o changeset: 3:443431ffac4f
305 305 | | user: test
306 306 | | date: Thu Jan 01 00:00:00 1970 +0000
307 307 | | summary: e
308 308 | |
309 309 | o changeset: 2:65bd5f99a4a3
310 310 |/ user: test
311 311 | date: Thu Jan 01 00:00:00 1970 +0000
312 312 | summary: d
313 313 |
314 314 o changeset: 1:ef3a871183d7
315 315 | user: test
316 316 | date: Thu Jan 01 00:00:00 1970 +0000
317 317 | summary: b
318 318 |
319 319 o changeset: 0:9ab35a2d17cb
320 320 user: test
321 321 date: Thu Jan 01 00:00:00 1970 +0000
322 322 summary: a
323 323
324 324
325 325 2 is parent of 3, only one strip should happen
326 326
327 327 $ hg strip "roots(2)" 3
328 328 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
329 329 $ hg log -G
330 330 @ changeset: 2:264128213d29
331 331 | tag: tip
332 332 | user: test
333 333 | date: Thu Jan 01 00:00:00 1970 +0000
334 334 | summary: c
335 335 |
336 336 o changeset: 1:ef3a871183d7
337 337 | user: test
338 338 | date: Thu Jan 01 00:00:00 1970 +0000
339 339 | summary: b
340 340 |
341 341 o changeset: 0:9ab35a2d17cb
342 342 user: test
343 343 date: Thu Jan 01 00:00:00 1970 +0000
344 344 summary: a
345 345
346 346 $ restore
347 347 $ hg log -G
348 348 o changeset: 4:443431ffac4f
349 349 | tag: tip
350 350 | user: test
351 351 | date: Thu Jan 01 00:00:00 1970 +0000
352 352 | summary: e
353 353 |
354 354 o changeset: 3:65bd5f99a4a3
355 355 | parent: 1:ef3a871183d7
356 356 | user: test
357 357 | date: Thu Jan 01 00:00:00 1970 +0000
358 358 | summary: d
359 359 |
360 360 | @ changeset: 2:264128213d29
361 361 |/ user: test
362 362 | date: Thu Jan 01 00:00:00 1970 +0000
363 363 | summary: c
364 364 |
365 365 o changeset: 1:ef3a871183d7
366 366 | user: test
367 367 | date: Thu Jan 01 00:00:00 1970 +0000
368 368 | summary: b
369 369 |
370 370 o changeset: 0:9ab35a2d17cb
371 371 user: test
372 372 date: Thu Jan 01 00:00:00 1970 +0000
373 373 summary: a
374 374
375 375 Failed hook while applying "saveheads" bundle.
376 376
377 377 $ hg strip 2 --config hooks.pretxnchangegroup.bad=false
378 378 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
379 379 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
380 380 transaction abort!
381 381 rollback completed
382 382 strip failed, backup bundle stored in '$TESTTMP/test/.hg/strip-backup/*-backup.hg' (glob)
383 383 strip failed, unrecovered changes stored in '$TESTTMP/test/.hg/strip-backup/*-temp.hg' (glob)
384 384 (fix the problem, then recover the changesets with "hg unbundle '$TESTTMP/test/.hg/strip-backup/*-temp.hg'") (glob)
385 385 abort: pretxnchangegroup.bad hook exited with status 1
386 386 [255]
387 387 $ restore
388 388 $ hg log -G
389 389 o changeset: 4:443431ffac4f
390 390 | tag: tip
391 391 | user: test
392 392 | date: Thu Jan 01 00:00:00 1970 +0000
393 393 | summary: e
394 394 |
395 395 o changeset: 3:65bd5f99a4a3
396 396 | parent: 1:ef3a871183d7
397 397 | user: test
398 398 | date: Thu Jan 01 00:00:00 1970 +0000
399 399 | summary: d
400 400 |
401 401 | o changeset: 2:264128213d29
402 402 |/ user: test
403 403 | date: Thu Jan 01 00:00:00 1970 +0000
404 404 | summary: c
405 405 |
406 406 @ changeset: 1:ef3a871183d7
407 407 | user: test
408 408 | date: Thu Jan 01 00:00:00 1970 +0000
409 409 | summary: b
410 410 |
411 411 o changeset: 0:9ab35a2d17cb
412 412 user: test
413 413 date: Thu Jan 01 00:00:00 1970 +0000
414 414 summary: a
415 415
416 416
417 417 2 different branches: 2 strips
418 418
419 419 $ hg strip 2 4
420 420 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
421 421 $ hg log -G
422 422 o changeset: 2:65bd5f99a4a3
423 423 | tag: tip
424 424 | user: test
425 425 | date: Thu Jan 01 00:00:00 1970 +0000
426 426 | summary: d
427 427 |
428 428 @ changeset: 1:ef3a871183d7
429 429 | user: test
430 430 | date: Thu Jan 01 00:00:00 1970 +0000
431 431 | summary: b
432 432 |
433 433 o changeset: 0:9ab35a2d17cb
434 434 user: test
435 435 date: Thu Jan 01 00:00:00 1970 +0000
436 436 summary: a
437 437
438 438 $ restore
439 439
440 440 2 different branches and a common ancestor: 1 strip
441 441
442 442 $ hg strip 1 "2|4"
443 443 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
444 444 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
445 445 $ restore
446 446
447 447 verify fncache is kept up-to-date
448 448
449 449 $ touch a
450 450 $ hg ci -qAm a
451 451 $ cat .hg/store/fncache | sort
452 452 data/a.i
453 453 data/bar.i
454 454 $ hg strip tip
455 455 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
456 456 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
457 457 $ cat .hg/store/fncache
458 458 data/bar.i
459 459
460 460 stripping an empty revset
461 461
462 462 $ hg strip "1 and not 1"
463 463 abort: empty revision set
464 464 [255]
465 465
466 466 remove branchy history for qimport tests
467 467
468 468 $ hg strip 3
469 469 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
470 470
471 471
472 472 strip of applied mq should cleanup status file
473 473
474 474 $ echo "mq=" >> $HGRCPATH
475 475 $ hg up -C 3
476 476 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
477 477 $ echo fooagain >> bar
478 478 $ hg ci -mf
479 479 $ hg qimport -r tip:2
480 480
481 481 applied patches before strip
482 482
483 483 $ hg qapplied
484 484 d
485 485 e
486 486 f
487 487
488 488 stripping revision in queue
489 489
490 490 $ hg strip 3
491 491 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
492 492 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
493 493
494 494 applied patches after stripping rev in queue
495 495
496 496 $ hg qapplied
497 497 d
498 498
499 499 stripping ancestor of queue
500 500
501 501 $ hg strip 1
502 502 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
503 503 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
504 504
505 505 applied patches after stripping ancestor of queue
506 506
507 507 $ hg qapplied
508 508
509 509 Verify strip protects against stripping wc parent when there are uncommitted mods
510 510
511 511 $ echo b > b
512 512 $ echo bb > bar
513 513 $ hg add b
514 514 $ hg ci -m 'b'
515 515 $ hg log --graph
516 516 @ changeset: 1:76dcf9fab855
517 517 | tag: tip
518 518 | user: test
519 519 | date: Thu Jan 01 00:00:00 1970 +0000
520 520 | summary: b
521 521 |
522 522 o changeset: 0:9ab35a2d17cb
523 523 user: test
524 524 date: Thu Jan 01 00:00:00 1970 +0000
525 525 summary: a
526 526
527 527 $ hg up 0
528 528 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
529 529 $ echo c > bar
530 530 $ hg up -t false
531 531 merging bar
532 532 merging bar failed!
533 533 1 files updated, 0 files merged, 0 files removed, 1 files unresolved
534 534 use 'hg resolve' to retry unresolved file merges
535 535 [1]
536 536 $ hg sum
537 537 parent: 1:76dcf9fab855 tip
538 538 b
539 539 branch: default
540 540 commit: 1 modified, 1 unknown, 1 unresolved
541 541 update: (current)
542 542 phases: 2 draft
543 543 mq: 3 unapplied
544 544
545 545 $ echo c > b
546 546 $ hg strip tip
547 547 abort: local changes found
548 548 [255]
549 549 $ hg strip tip --keep
550 550 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
551 551 $ hg log --graph
552 552 @ changeset: 0:9ab35a2d17cb
553 553 tag: tip
554 554 user: test
555 555 date: Thu Jan 01 00:00:00 1970 +0000
556 556 summary: a
557 557
558 558 $ hg status
559 559 M bar
560 560 ? b
561 561 ? bar.orig
562 562
563 563 $ rm bar.orig
564 564 $ hg sum
565 565 parent: 0:9ab35a2d17cb tip
566 566 a
567 567 branch: default
568 568 commit: 1 modified, 1 unknown
569 569 update: (current)
570 570 phases: 1 draft
571 571 mq: 3 unapplied
572 572
573 573 Strip adds, removes, modifies with --keep
574 574
575 575 $ touch b
576 576 $ hg add b
577 577 $ hg commit -mb
578 578 $ touch c
579 579
580 580 ... with a clean working dir
581 581
582 582 $ hg add c
583 583 $ hg rm bar
584 584 $ hg commit -mc
585 585 $ hg status
586 586 $ hg strip --keep tip
587 587 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
588 588 $ hg status
589 589 ! bar
590 590 ? c
591 591
592 592 ... with a dirty working dir
593 593
594 594 $ hg add c
595 595 $ hg rm bar
596 596 $ hg commit -mc
597 597 $ hg status
598 598 $ echo b > b
599 599 $ echo d > d
600 600 $ hg strip --keep tip
601 601 saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
602 602 $ hg status
603 603 M b
604 604 ! bar
605 605 ? c
606 606 ? d
607 607
608 608 ... after updating the dirstate
609 609 $ hg add c
610 610 $ hg commit -mc
611 611 $ hg rm c
612 612 $ hg commit -mc
613 613 $ hg strip --keep '.^' -q
614 614 $ cd ..
615 615
616 616 stripping many nodes on a complex graph (issue3299)
617 617
618 618 $ hg init issue3299
619 619 $ cd issue3299
620 620 $ hg debugbuilddag '@a.:a@b.:b.:x<a@a.:a<b@b.:b<a@a.:a'
621 621 $ hg strip 'not ancestors(x)'
622 622 saved backup bundle to $TESTTMP/issue3299/.hg/strip-backup/*-backup.hg (glob)
623 623
624 624 test hg strip -B bookmark
625 625
626 626 $ cd ..
627 627 $ hg init bookmarks
628 628 $ cd bookmarks
629 629 $ hg debugbuilddag '..<2.*1/2:m<2+3:c<m+3:a<2.:b<m+2:d<2.:e<m+1:f'
630 630 $ hg bookmark -r 'a' 'todelete'
631 631 $ hg bookmark -r 'b' 'B'
632 632 $ hg bookmark -r 'b' 'nostrip'
633 633 $ hg bookmark -r 'c' 'delete'
634 634 $ hg bookmark -r 'd' 'multipledelete1'
635 635 $ hg bookmark -r 'e' 'multipledelete2'
636 636 $ hg bookmark -r 'f' 'singlenode1'
637 637 $ hg bookmark -r 'f' 'singlenode2'
638 638 $ hg up -C todelete
639 639 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
640 640 (activating bookmark todelete)
641 641 $ hg strip -B nostrip
642 642 bookmark 'nostrip' deleted
643 643 abort: empty revision set
644 644 [255]
645 645 $ hg strip -B todelete
646 646 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
647 647 saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/*-backup.hg (glob)
648 648 bookmark 'todelete' deleted
649 649 $ hg id -ir dcbb326fdec2
650 650 abort: unknown revision 'dcbb326fdec2'!
651 651 [255]
652 652 $ hg id -ir d62d843c9a01
653 653 d62d843c9a01
654 654 $ hg bookmarks
655 655 B 9:ff43616e5d0f
656 656 delete 6:2702dd0c91e7
657 657 multipledelete1 11:e46a4836065c
658 658 multipledelete2 12:b4594d867745
659 659 singlenode1 13:43227190fef8
660 660 singlenode2 13:43227190fef8
661 661 $ hg strip -B multipledelete1 -B multipledelete2
662 662 saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/e46a4836065c-89ec65c2-backup.hg
663 663 bookmark 'multipledelete1' deleted
664 664 bookmark 'multipledelete2' deleted
665 665 $ hg id -ir e46a4836065c
666 666 abort: unknown revision 'e46a4836065c'!
667 667 [255]
668 668 $ hg id -ir b4594d867745
669 669 abort: unknown revision 'b4594d867745'!
670 670 [255]
671 671 $ hg strip -B singlenode1 -B singlenode2
672 672 saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/43227190fef8-8da858f2-backup.hg
673 673 bookmark 'singlenode1' deleted
674 674 bookmark 'singlenode2' deleted
675 675 $ hg id -ir 43227190fef8
676 676 abort: unknown revision '43227190fef8'!
677 677 [255]
678 678 $ hg strip -B unknownbookmark
679 679 abort: bookmark 'unknownbookmark' not found
680 680 [255]
681 681 $ hg strip -B unknownbookmark1 -B unknownbookmark2
682 682 abort: bookmark 'unknownbookmark1,unknownbookmark2' not found
683 683 [255]
684 684 $ hg strip -B delete -B unknownbookmark
685 685 abort: bookmark 'unknownbookmark' not found
686 686 [255]
687 687 $ hg strip -B delete
688 688 saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/*-backup.hg (glob)
689 689 bookmark 'delete' deleted
690 690 $ hg id -ir 6:2702dd0c91e7
691 691 abort: unknown revision '2702dd0c91e7'!
692 692 [255]
693 693 $ hg update B
694 694 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
695 695 (activating bookmark B)
696 696 $ echo a > a
697 697 $ hg add a
698 698 $ hg strip -B B
699 699 abort: local changes found
700 700 [255]
701 701 $ hg bookmarks
702 702 * B 6:ff43616e5d0f
703 703
704 704 Make sure no one adds back a -b option:
705 705
706 706 $ hg strip -b tip
707 707 hg strip: option -b not recognized
708 708 hg strip [-k] [-f] [-B bookmark] [-r] REV...
709 709
710 710 strip changesets and all their descendants from the repository
711 711
712 712 (use 'hg help -e strip' to show help for the strip extension)
713 713
714 714 options ([+] can be repeated):
715 715
716 716 -r --rev REV [+] strip specified revision (optional, can specify
717 717 revisions without this option)
718 718 -f --force force removal of changesets, discard uncommitted
719 719 changes (no backup)
720 720 --no-backup no backups
721 721 -k --keep do not modify working directory during strip
722 722 -B --bookmark VALUE [+] remove revs only reachable from given bookmark
723 723 --mq operate on patch repository
724 724
725 725 (use 'hg strip -h' to show more help)
726 726 [255]
727 727
728 728 $ cd ..
729 729
730 730 Verify bundles don't get overwritten:
731 731
732 732 $ hg init doublebundle
733 733 $ cd doublebundle
734 734 $ touch a
735 735 $ hg commit -Aqm a
736 736 $ touch b
737 737 $ hg commit -Aqm b
738 738 $ hg strip -r 0
739 739 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
740 740 saved backup bundle to $TESTTMP/doublebundle/.hg/strip-backup/3903775176ed-e68910bd-backup.hg
741 741 $ ls .hg/strip-backup
742 742 3903775176ed-e68910bd-backup.hg
743 743 $ hg pull -q -r 3903775176ed .hg/strip-backup/3903775176ed-e68910bd-backup.hg
744 744 $ hg strip -r 0
745 745 saved backup bundle to $TESTTMP/doublebundle/.hg/strip-backup/3903775176ed-54390173-backup.hg
746 746 $ ls .hg/strip-backup
747 747 3903775176ed-54390173-backup.hg
748 748 3903775176ed-e68910bd-backup.hg
749 749 $ cd ..
750 750
751 751 Test that we only bundle the stripped changesets (issue4736)
752 752 ------------------------------------------------------------
753 753
754 754 initialization (previous repo is empty anyway)
755 755
756 756 $ hg init issue4736
757 757 $ cd issue4736
758 758 $ echo a > a
759 759 $ hg add a
760 760 $ hg commit -m commitA
761 761 $ echo b > b
762 762 $ hg add b
763 763 $ hg commit -m commitB
764 764 $ echo c > c
765 765 $ hg add c
766 766 $ hg commit -m commitC
767 767 $ hg up 'desc(commitB)'
768 768 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
769 769 $ echo d > d
770 770 $ hg add d
771 771 $ hg commit -m commitD
772 772 created new head
773 773 $ hg up 'desc(commitC)'
774 774 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
775 775 $ hg merge 'desc(commitD)'
776 776 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
777 777 (branch merge, don't forget to commit)
778 778 $ hg ci -m 'mergeCD'
779 779 $ hg log -G
780 780 @ changeset: 4:d8db9d137221
781 781 |\ tag: tip
782 782 | | parent: 2:5c51d8d6557d
783 783 | | parent: 3:6625a5168474
784 784 | | user: test
785 785 | | date: Thu Jan 01 00:00:00 1970 +0000
786 786 | | summary: mergeCD
787 787 | |
788 788 | o changeset: 3:6625a5168474
789 789 | | parent: 1:eca11cf91c71
790 790 | | user: test
791 791 | | date: Thu Jan 01 00:00:00 1970 +0000
792 792 | | summary: commitD
793 793 | |
794 794 o | changeset: 2:5c51d8d6557d
795 795 |/ user: test
796 796 | date: Thu Jan 01 00:00:00 1970 +0000
797 797 | summary: commitC
798 798 |
799 799 o changeset: 1:eca11cf91c71
800 800 | user: test
801 801 | date: Thu Jan 01 00:00:00 1970 +0000
802 802 | summary: commitB
803 803 |
804 804 o changeset: 0:105141ef12d0
805 805 user: test
806 806 date: Thu Jan 01 00:00:00 1970 +0000
807 807 summary: commitA
808 808
809 809
810 810 Check bundle behavior:
811 811
812 812 $ hg bundle -r 'desc(mergeCD)' --base 'desc(commitC)' ../issue4736.hg
813 813 2 changesets found
814 814 $ hg log -r 'bundle()' -R ../issue4736.hg
815 815 changeset: 3:6625a5168474
816 816 parent: 1:eca11cf91c71
817 817 user: test
818 818 date: Thu Jan 01 00:00:00 1970 +0000
819 819 summary: commitD
820 820
821 821 changeset: 4:d8db9d137221
822 822 tag: tip
823 823 parent: 2:5c51d8d6557d
824 824 parent: 3:6625a5168474
825 825 user: test
826 826 date: Thu Jan 01 00:00:00 1970 +0000
827 827 summary: mergeCD
828 828
829 829
830 830 check strip behavior
831 831
832 832 $ hg --config extensions.strip= strip 'desc(commitD)' --debug
833 833 resolving manifests
834 834 branchmerge: False, force: True, partial: False
835 835 ancestor: d8db9d137221+, local: d8db9d137221+, remote: eca11cf91c71
836 836 c: other deleted -> r
837 837 removing c
838 838 d: other deleted -> r
839 839 removing d
840 840 starting 4 threads for background file closing (?)
841 841 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
842 842 2 changesets found
843 843 list of changesets:
844 844 6625a516847449b6f0fa3737b9ba56e9f0f3032c
845 845 d8db9d1372214336d2b5570f20ee468d2c72fa8b
846 846 bundle2-output-bundle: "HG20", (1 params) 2 parts total
847 847 bundle2-output-part: "changegroup" (params: 1 mandatory 1 advisory) streamed payload
848 848 bundle2-output-part: "phase-heads" 24 bytes payload
849 849 saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/6625a5168474-345bb43d-backup.hg
850 850 updating the branch cache
851 851 invalid branchheads cache (served): tip differs
852 852 truncating cache/rbc-revs-v1 to 24
853 853 $ hg log -G
854 854 o changeset: 2:5c51d8d6557d
855 855 | tag: tip
856 856 | user: test
857 857 | date: Thu Jan 01 00:00:00 1970 +0000
858 858 | summary: commitC
859 859 |
860 860 @ changeset: 1:eca11cf91c71
861 861 | user: test
862 862 | date: Thu Jan 01 00:00:00 1970 +0000
863 863 | summary: commitB
864 864 |
865 865 o changeset: 0:105141ef12d0
866 866 user: test
867 867 date: Thu Jan 01 00:00:00 1970 +0000
868 868 summary: commitA
869 869
870 870
871 871 strip backup content
872 872
873 873 $ hg log -r 'bundle()' -R .hg/strip-backup/6625a5168474-*-backup.hg
874 874 changeset: 3:6625a5168474
875 875 parent: 1:eca11cf91c71
876 876 user: test
877 877 date: Thu Jan 01 00:00:00 1970 +0000
878 878 summary: commitD
879 879
880 880 changeset: 4:d8db9d137221
881 881 tag: tip
882 882 parent: 2:5c51d8d6557d
883 883 parent: 3:6625a5168474
884 884 user: test
885 885 date: Thu Jan 01 00:00:00 1970 +0000
886 886 summary: mergeCD
887 887
888 888 Check that the phase cache is properly invalidated after a strip with bookmark.
889 889
890 890 $ cat > ../stripstalephasecache.py << EOF
891 891 > from mercurial import extensions, localrepo
892 892 > def transactioncallback(orig, repo, desc, *args, **kwargs):
893 893 > def test(transaction):
894 894 > # observe cache inconsistency
895 895 > try:
896 > [repo.changelog.node(r) for r in repo.revs("not public()")]
896 > [repo.changelog.node(r) for r in repo.revs(b"not public()")]
897 897 > except IndexError:
898 > repo.ui.status("Index error!\n")
898 > repo.ui.status(b"Index error!\n")
899 899 > transaction = orig(repo, desc, *args, **kwargs)
900 900 > # warm up the phase cache
901 > list(repo.revs("not public()"))
901 > list(repo.revs(b"not public()"))
902 902 > if desc != 'strip':
903 > transaction.addpostclose("phase invalidation test", test)
903 > transaction.addpostclose(b"phase invalidation test", test)
904 904 > return transaction
905 905 > def extsetup(ui):
906 > extensions.wrapfunction(localrepo.localrepository, "transaction",
906 > extensions.wrapfunction(localrepo.localrepository, b"transaction",
907 907 > transactioncallback)
908 908 > EOF
909 909 $ hg up -C 2
910 910 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
911 911 $ echo k > k
912 912 $ hg add k
913 913 $ hg commit -m commitK
914 914 $ echo l > l
915 915 $ hg add l
916 916 $ hg commit -m commitL
917 917 $ hg book -r tip blah
918 918 $ hg strip ".^" --config extensions.crash=$TESTTMP/stripstalephasecache.py
919 919 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
920 920 saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/8f0b4384875c-4fa10deb-backup.hg
921 921 $ hg up -C 1
922 922 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
923 923
924 924 Error during post-close callback of the strip transaction
925 925 (They should be gracefully handled and reported)
926 926
927 927 $ cat > ../crashstrip.py << EOF
928 928 > from mercurial import error
929 929 > def reposetup(ui, repo):
930 930 > class crashstriprepo(repo.__class__):
931 931 > def transaction(self, desc, *args, **kwargs):
932 932 > tr = super(crashstriprepo, self).transaction(desc, *args, **kwargs)
933 > if desc == 'strip':
934 > def crash(tra): raise error.Abort('boom')
935 > tr.addpostclose('crash', crash)
933 > if desc == b'strip':
934 > def crash(tra): raise error.Abort(b'boom')
935 > tr.addpostclose(b'crash', crash)
936 936 > return tr
937 937 > repo.__class__ = crashstriprepo
938 938 > EOF
939 939 $ hg strip tip --config extensions.crash=$TESTTMP/crashstrip.py
940 940 saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/5c51d8d6557d-70daef06-backup.hg
941 941 strip failed, backup bundle stored in '$TESTTMP/issue4736/.hg/strip-backup/5c51d8d6557d-70daef06-backup.hg'
942 942 abort: boom
943 943 [255]
944 944
945 945 test stripping a working directory parent doesn't switch named branches
946 946
947 947 $ hg log -G
948 948 @ changeset: 1:eca11cf91c71
949 949 | tag: tip
950 950 | user: test
951 951 | date: Thu Jan 01 00:00:00 1970 +0000
952 952 | summary: commitB
953 953 |
954 954 o changeset: 0:105141ef12d0
955 955 user: test
956 956 date: Thu Jan 01 00:00:00 1970 +0000
957 957 summary: commitA
958 958
959 959
960 960 $ hg branch new-branch
961 961 marked working directory as branch new-branch
962 962 (branches are permanent and global, did you want a bookmark?)
963 963 $ hg ci -m "start new branch"
964 964 $ echo 'foo' > foo.txt
965 965 $ hg ci -Aqm foo
966 966 $ hg up default
967 967 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
968 968 $ echo 'bar' > bar.txt
969 969 $ hg ci -Aqm bar
970 970 $ hg up new-branch
971 971 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
972 972 $ hg merge default
973 973 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
974 974 (branch merge, don't forget to commit)
975 975 $ hg log -G
976 976 @ changeset: 4:35358f982181
977 977 | tag: tip
978 978 | parent: 1:eca11cf91c71
979 979 | user: test
980 980 | date: Thu Jan 01 00:00:00 1970 +0000
981 981 | summary: bar
982 982 |
983 983 | @ changeset: 3:f62c6c09b707
984 984 | | branch: new-branch
985 985 | | user: test
986 986 | | date: Thu Jan 01 00:00:00 1970 +0000
987 987 | | summary: foo
988 988 | |
989 989 | o changeset: 2:b1d33a8cadd9
990 990 |/ branch: new-branch
991 991 | user: test
992 992 | date: Thu Jan 01 00:00:00 1970 +0000
993 993 | summary: start new branch
994 994 |
995 995 o changeset: 1:eca11cf91c71
996 996 | user: test
997 997 | date: Thu Jan 01 00:00:00 1970 +0000
998 998 | summary: commitB
999 999 |
1000 1000 o changeset: 0:105141ef12d0
1001 1001 user: test
1002 1002 date: Thu Jan 01 00:00:00 1970 +0000
1003 1003 summary: commitA
1004 1004
1005 1005
1006 1006 $ hg strip --force -r 35358f982181
1007 1007 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1008 1008 saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/35358f982181-50d992d4-backup.hg
1009 1009 $ hg log -G
1010 1010 @ changeset: 3:f62c6c09b707
1011 1011 | branch: new-branch
1012 1012 | tag: tip
1013 1013 | user: test
1014 1014 | date: Thu Jan 01 00:00:00 1970 +0000
1015 1015 | summary: foo
1016 1016 |
1017 1017 o changeset: 2:b1d33a8cadd9
1018 1018 | branch: new-branch
1019 1019 | user: test
1020 1020 | date: Thu Jan 01 00:00:00 1970 +0000
1021 1021 | summary: start new branch
1022 1022 |
1023 1023 o changeset: 1:eca11cf91c71
1024 1024 | user: test
1025 1025 | date: Thu Jan 01 00:00:00 1970 +0000
1026 1026 | summary: commitB
1027 1027 |
1028 1028 o changeset: 0:105141ef12d0
1029 1029 user: test
1030 1030 date: Thu Jan 01 00:00:00 1970 +0000
1031 1031 summary: commitA
1032 1032
1033 1033
1034 1034 $ hg up default
1035 1035 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1036 1036 $ echo 'bar' > bar.txt
1037 1037 $ hg ci -Aqm bar
1038 1038 $ hg up new-branch
1039 1039 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
1040 1040 $ hg merge default
1041 1041 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1042 1042 (branch merge, don't forget to commit)
1043 1043 $ hg ci -m merge
1044 1044 $ hg log -G
1045 1045 @ changeset: 5:4cf5e92caec2
1046 1046 |\ branch: new-branch
1047 1047 | | tag: tip
1048 1048 | | parent: 3:f62c6c09b707
1049 1049 | | parent: 4:35358f982181
1050 1050 | | user: test
1051 1051 | | date: Thu Jan 01 00:00:00 1970 +0000
1052 1052 | | summary: merge
1053 1053 | |
1054 1054 | o changeset: 4:35358f982181
1055 1055 | | parent: 1:eca11cf91c71
1056 1056 | | user: test
1057 1057 | | date: Thu Jan 01 00:00:00 1970 +0000
1058 1058 | | summary: bar
1059 1059 | |
1060 1060 o | changeset: 3:f62c6c09b707
1061 1061 | | branch: new-branch
1062 1062 | | user: test
1063 1063 | | date: Thu Jan 01 00:00:00 1970 +0000
1064 1064 | | summary: foo
1065 1065 | |
1066 1066 o | changeset: 2:b1d33a8cadd9
1067 1067 |/ branch: new-branch
1068 1068 | user: test
1069 1069 | date: Thu Jan 01 00:00:00 1970 +0000
1070 1070 | summary: start new branch
1071 1071 |
1072 1072 o changeset: 1:eca11cf91c71
1073 1073 | user: test
1074 1074 | date: Thu Jan 01 00:00:00 1970 +0000
1075 1075 | summary: commitB
1076 1076 |
1077 1077 o changeset: 0:105141ef12d0
1078 1078 user: test
1079 1079 date: Thu Jan 01 00:00:00 1970 +0000
1080 1080 summary: commitA
1081 1081
1082 1082
1083 1083 $ hg strip -r 35358f982181
1084 1084 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1085 1085 saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/35358f982181-a6f020aa-backup.hg
1086 1086 $ hg log -G
1087 1087 @ changeset: 3:f62c6c09b707
1088 1088 | branch: new-branch
1089 1089 | tag: tip
1090 1090 | user: test
1091 1091 | date: Thu Jan 01 00:00:00 1970 +0000
1092 1092 | summary: foo
1093 1093 |
1094 1094 o changeset: 2:b1d33a8cadd9
1095 1095 | branch: new-branch
1096 1096 | user: test
1097 1097 | date: Thu Jan 01 00:00:00 1970 +0000
1098 1098 | summary: start new branch
1099 1099 |
1100 1100 o changeset: 1:eca11cf91c71
1101 1101 | user: test
1102 1102 | date: Thu Jan 01 00:00:00 1970 +0000
1103 1103 | summary: commitB
1104 1104 |
1105 1105 o changeset: 0:105141ef12d0
1106 1106 user: test
1107 1107 date: Thu Jan 01 00:00:00 1970 +0000
1108 1108 summary: commitA
1109 1109
1110 1110
1111 1111 $ hg pull -u $TESTTMP/issue4736/.hg/strip-backup/35358f982181-a6f020aa-backup.hg
1112 1112 pulling from $TESTTMP/issue4736/.hg/strip-backup/35358f982181-a6f020aa-backup.hg
1113 1113 searching for changes
1114 1114 adding changesets
1115 1115 adding manifests
1116 1116 adding file changes
1117 1117 added 2 changesets with 1 changes to 1 files
1118 1118 new changesets 35358f982181:4cf5e92caec2
1119 1119 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1120 1120
1121 1121 $ hg strip -k -r 35358f982181
1122 1122 saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/35358f982181-a6f020aa-backup.hg
1123 1123 $ hg log -G
1124 1124 @ changeset: 3:f62c6c09b707
1125 1125 | branch: new-branch
1126 1126 | tag: tip
1127 1127 | user: test
1128 1128 | date: Thu Jan 01 00:00:00 1970 +0000
1129 1129 | summary: foo
1130 1130 |
1131 1131 o changeset: 2:b1d33a8cadd9
1132 1132 | branch: new-branch
1133 1133 | user: test
1134 1134 | date: Thu Jan 01 00:00:00 1970 +0000
1135 1135 | summary: start new branch
1136 1136 |
1137 1137 o changeset: 1:eca11cf91c71
1138 1138 | user: test
1139 1139 | date: Thu Jan 01 00:00:00 1970 +0000
1140 1140 | summary: commitB
1141 1141 |
1142 1142 o changeset: 0:105141ef12d0
1143 1143 user: test
1144 1144 date: Thu Jan 01 00:00:00 1970 +0000
1145 1145 summary: commitA
1146 1146
1147 1147 $ hg diff
1148 1148 diff -r f62c6c09b707 bar.txt
1149 1149 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1150 1150 +++ b/bar.txt Thu Jan 01 00:00:00 1970 +0000
1151 1151 @@ -0,0 +1,1 @@
1152 1152 +bar
1153 1153
1154 1154 Use delayedstrip to strip inside a transaction
1155 1155
1156 1156 $ cd $TESTTMP
1157 1157 $ hg init delayedstrip
1158 1158 $ cd delayedstrip
1159 1159 $ hg debugdrawdag <<'EOS'
1160 1160 > D
1161 1161 > |
1162 1162 > C F H # Commit on top of "I",
1163 1163 > | |/| # Strip B+D+I+E+G+H+Z
1164 1164 > I B E G
1165 1165 > \|/
1166 1166 > A Z
1167 1167 > EOS
1168 1168 $ cp -R . ../scmutilcleanup
1169 1169
1170 1170 $ hg up -C I
1171 1171 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1172 1172 $ echo 3 >> I
1173 1173 $ cat > $TESTTMP/delayedstrip.py <<EOF
1174 1174 > from __future__ import absolute_import
1175 1175 > from mercurial import commands, registrar, repair
1176 1176 > cmdtable = {}
1177 1177 > command = registrar.command(cmdtable)
1178 > @command('testdelayedstrip')
1178 > @command(b'testdelayedstrip')
1179 1179 > def testdelayedstrip(ui, repo):
1180 1180 > def getnodes(expr):
1181 1181 > return [repo.changelog.node(r) for r in repo.revs(expr)]
1182 1182 > with repo.wlock():
1183 1183 > with repo.lock():
1184 > with repo.transaction('delayedstrip'):
1185 > repair.delayedstrip(ui, repo, getnodes('B+I+Z+D+E'), 'J')
1186 > repair.delayedstrip(ui, repo, getnodes('G+H+Z'), 'I')
1187 > commands.commit(ui, repo, message='J', date='0 0')
1184 > with repo.transaction(b'delayedstrip'):
1185 > repair.delayedstrip(ui, repo, getnodes(b'B+I+Z+D+E'), b'J')
1186 > repair.delayedstrip(ui, repo, getnodes(b'G+H+Z'), b'I')
1187 > commands.commit(ui, repo, message=b'J', date=b'0 0')
1188 1188 > EOF
1189 1189 $ hg testdelayedstrip --config extensions.t=$TESTTMP/delayedstrip.py
1190 1190 warning: orphaned descendants detected, not stripping 08ebfeb61bac, 112478962961, 7fb047a69f22
1191 1191 saved backup bundle to $TESTTMP/delayedstrip/.hg/strip-backup/f585351a92f8-17475721-I.hg
1192 1192
1193 1193 $ hg log -G -T '{rev}:{node|short} {desc}' -r 'sort(all(), topo)'
1194 1194 @ 6:2f2d51af6205 J
1195 1195 |
1196 1196 o 3:08ebfeb61bac I
1197 1197 |
1198 1198 | o 5:64a8289d2492 F
1199 1199 | |
1200 1200 | o 2:7fb047a69f22 E
1201 1201 |/
1202 1202 | o 4:26805aba1e60 C
1203 1203 | |
1204 1204 | o 1:112478962961 B
1205 1205 |/
1206 1206 o 0:426bada5c675 A
1207 1207
1208 1208 Test high-level scmutil.cleanupnodes API
1209 1209
1210 1210 $ cd $TESTTMP/scmutilcleanup
1211 1211 $ hg debugdrawdag <<'EOS'
1212 1212 > D2 F2 G2 # D2, F2, G2 are replacements for D, F, G
1213 1213 > | | |
1214 1214 > C H G
1215 1215 > EOS
1216 1216 $ for i in B C D F G I Z; do
1217 1217 > hg bookmark -i -r $i b-$i
1218 1218 > done
1219 1219 $ hg bookmark -i -r E 'b-F@divergent1'
1220 1220 $ hg bookmark -i -r H 'b-F@divergent2'
1221 1221 $ hg bookmark -i -r G 'b-F@divergent3'
1222 1222 $ cp -R . ../scmutilcleanup.obsstore
1223 1223
1224 1224 $ cat > $TESTTMP/scmutilcleanup.py <<EOF
1225 1225 > from mercurial import registrar, scmutil
1226 1226 > cmdtable = {}
1227 1227 > command = registrar.command(cmdtable)
1228 > @command('testnodescleanup')
1228 > @command(b'testnodescleanup')
1229 1229 > def testnodescleanup(ui, repo):
1230 1230 > def nodes(expr):
1231 1231 > return [repo.changelog.node(r) for r in repo.revs(expr)]
1232 1232 > def node(expr):
1233 1233 > return nodes(expr)[0]
1234 1234 > with repo.wlock():
1235 1235 > with repo.lock():
1236 > with repo.transaction('delayedstrip'):
1237 > mapping = {node('F'): [node('F2')],
1238 > node('D'): [node('D2')],
1239 > node('G'): [node('G2')]}
1240 > scmutil.cleanupnodes(repo, mapping, 'replace')
1241 > scmutil.cleanupnodes(repo, nodes('((B::)+I+Z)-D2'), 'replace')
1236 > with repo.transaction(b'delayedstrip'):
1237 > mapping = {node(b'F'): [node(b'F2')],
1238 > node(b'D'): [node(b'D2')],
1239 > node(b'G'): [node(b'G2')]}
1240 > scmutil.cleanupnodes(repo, mapping, b'replace')
1241 > scmutil.cleanupnodes(repo, nodes(b'((B::)+I+Z)-D2'),
1242 > b'replace')
1242 1243 > EOF
1243 1244 $ hg testnodescleanup --config extensions.t=$TESTTMP/scmutilcleanup.py
1244 1245 warning: orphaned descendants detected, not stripping 112478962961, 1fc8102cda62, 26805aba1e60
1245 1246 saved backup bundle to $TESTTMP/scmutilcleanup/.hg/strip-backup/f585351a92f8-73fb7c03-replace.hg
1246 1247
1247 1248 $ hg log -G -T '{rev}:{node|short} {desc} {bookmarks}' -r 'sort(all(), topo)'
1248 1249 o 8:1473d4b996d1 G2 b-F@divergent3 b-G
1249 1250 |
1250 1251 | o 7:d11b3456a873 F2 b-F
1251 1252 | |
1252 1253 | o 5:5cb05ba470a7 H
1253 1254 |/|
1254 1255 | o 3:7fb047a69f22 E b-F@divergent1
1255 1256 | |
1256 1257 | | o 6:7c78f703e465 D2 b-D
1257 1258 | | |
1258 1259 | | o 4:26805aba1e60 C
1259 1260 | | |
1260 1261 | | o 2:112478962961 B
1261 1262 | |/
1262 1263 o | 1:1fc8102cda62 G
1263 1264 /
1264 1265 o 0:426bada5c675 A b-B b-C b-I
1265 1266
1266 1267 $ hg bookmark
1267 1268 b-B 0:426bada5c675
1268 1269 b-C 0:426bada5c675
1269 1270 b-D 6:7c78f703e465
1270 1271 b-F 7:d11b3456a873
1271 1272 b-F@divergent1 3:7fb047a69f22
1272 1273 b-F@divergent3 8:1473d4b996d1
1273 1274 b-G 8:1473d4b996d1
1274 1275 b-I 0:426bada5c675
1275 1276 b-Z -1:000000000000
1276 1277
1277 1278 Test the above using obsstore "by the way". Not directly related to strip, but
1278 1279 we have reusable code here
1279 1280
1280 1281 $ cd $TESTTMP/scmutilcleanup.obsstore
1281 1282 $ cat >> .hg/hgrc <<EOF
1282 1283 > [experimental]
1283 1284 > evolution=true
1284 1285 > evolution.track-operation=1
1285 1286 > EOF
1286 1287
1287 1288 $ hg testnodescleanup --config extensions.t=$TESTTMP/scmutilcleanup.py
1288 1289 4 new orphan changesets
1289 1290
1290 1291 $ rm .hg/localtags
1291 1292 $ hg log -G -T '{rev}:{node|short} {desc} {bookmarks}' -r 'sort(all(), topo)'
1292 1293 * 12:1473d4b996d1 G2 b-F@divergent3 b-G
1293 1294 |
1294 1295 | * 11:d11b3456a873 F2 b-F
1295 1296 | |
1296 1297 | * 8:5cb05ba470a7 H
1297 1298 |/|
1298 1299 | o 4:7fb047a69f22 E b-F@divergent1
1299 1300 | |
1300 1301 | | * 10:7c78f703e465 D2 b-D
1301 1302 | | |
1302 1303 | | x 6:26805aba1e60 C
1303 1304 | | |
1304 1305 | | x 3:112478962961 B
1305 1306 | |/
1306 1307 x | 1:1fc8102cda62 G
1307 1308 /
1308 1309 o 0:426bada5c675 A b-B b-C b-I
1309 1310
1310 1311 $ hg debugobsolete
1311 1312 1fc8102cda6204549f031015641606ccf5513ec3 1473d4b996d1d1b121de6b39fab6a04fbf9d873e 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '13', 'operation': 'replace', 'user': 'test'}
1312 1313 64a8289d249234b9886244d379f15e6b650b28e3 d11b3456a873daec7c7bc53e5622e8df6d741bd2 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '13', 'operation': 'replace', 'user': 'test'}
1313 1314 f585351a92f85104bff7c284233c338b10eb1df7 7c78f703e465d73102cc8780667ce269c5208a40 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '9', 'operation': 'replace', 'user': 'test'}
1314 1315 48b9aae0607f43ff110d84e6883c151942add5ab 0 {0000000000000000000000000000000000000000} (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '0', 'operation': 'replace', 'user': 'test'}
1315 1316 112478962961147124edd43549aedd1a335e44bf 0 {426bada5c67598ca65036d57d9e4b64b0c1ce7a0} (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '0', 'operation': 'replace', 'user': 'test'}
1316 1317 08ebfeb61bac6e3f12079de774d285a0d6689eba 0 {426bada5c67598ca65036d57d9e4b64b0c1ce7a0} (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '0', 'operation': 'replace', 'user': 'test'}
1317 1318 26805aba1e600a82e93661149f2313866a221a7b 0 {112478962961147124edd43549aedd1a335e44bf} (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '0', 'operation': 'replace', 'user': 'test'}
1318 1319 $ cd ..
1319 1320
1320 1321 Test that obsmarkers are restored even when not using generaldelta
1321 1322
1322 1323 $ hg --config format.usegeneraldelta=no init issue5678
1323 1324 $ cd issue5678
1324 1325 $ cat >> .hg/hgrc <<EOF
1325 1326 > [experimental]
1326 1327 > evolution=true
1327 1328 > EOF
1328 1329 $ echo a > a
1329 1330 $ hg ci -Aqm a
1330 1331 $ hg ci --amend -m a2
1331 1332 $ hg debugobsolete
1332 1333 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b 489bac576828490c0bb8d45eac9e5e172e4ec0a8 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1333 1334 $ hg strip .
1334 1335 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1335 1336 saved backup bundle to $TESTTMP/issue5678/.hg/strip-backup/489bac576828-bef27e14-backup.hg
1336 1337 $ hg unbundle -q .hg/strip-backup/*
1337 1338 $ hg debugobsolete
1338 1339 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b 489bac576828490c0bb8d45eac9e5e172e4ec0a8 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'}
1339 1340 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now