##// END OF EJS Templates
test-bookmark: clarify the path involved in a pull creating divergence...
marmoute -
r48381:28a914b3 default
parent child Browse files
Show More
@@ -1,1257 +1,1261 b''
1 1
2 2 $ hg init repo
3 3 $ cd repo
4 4
5 5 $ cat > $TESTTMP/hook.sh <<'EOF'
6 6 > echo "test-hook-bookmark: $HG_BOOKMARK: $HG_OLDNODE -> $HG_NODE"
7 7 > EOF
8 8 $ TESTHOOK="hooks.txnclose-bookmark.test=sh $TESTTMP/hook.sh"
9 9
10 10 no bookmarks
11 11
12 12 $ hg bookmarks
13 13 no bookmarks set
14 14
15 15 $ hg bookmarks -Tjson
16 16 [
17 17 ]
18 18
19 19 bookmark rev -1
20 20
21 21 $ hg bookmark X --config "$TESTHOOK"
22 22 test-hook-bookmark: X: -> 0000000000000000000000000000000000000000
23 23
24 24 list bookmarks
25 25
26 26 $ hg bookmarks
27 27 * X -1:000000000000
28 28
29 29 list bookmarks with color
30 30
31 31 $ hg --config extensions.color= --config color.mode=ansi \
32 32 > bookmarks --color=always
33 33 \x1b[0;32m * \x1b[0m\x1b[0;32mX\x1b[0m\x1b[0;32m -1:000000000000\x1b[0m (esc)
34 34
35 35 $ echo a > a
36 36 $ hg add a
37 37 $ hg commit -m 0 --config "$TESTHOOK"
38 38 test-hook-bookmark: X: 0000000000000000000000000000000000000000 -> f7b1eb17ad24730a1651fccd46c43826d1bbc2ac
39 39
40 40 bookmark X moved to rev 0
41 41
42 42 $ hg bookmarks
43 43 * X 0:f7b1eb17ad24
44 44
45 45 look up bookmark
46 46
47 47 $ hg log -r X
48 48 changeset: 0:f7b1eb17ad24
49 49 bookmark: X
50 50 tag: tip
51 51 user: test
52 52 date: Thu Jan 01 00:00:00 1970 +0000
53 53 summary: 0
54 54
55 55
56 56 second bookmark for rev 0, command should work even with ui.strict on
57 57
58 58 $ hg --config ui.strict=1 bookmark X2 --config "$TESTHOOK"
59 59 test-hook-bookmark: X2: -> f7b1eb17ad24730a1651fccd46c43826d1bbc2ac
60 60
61 61 bookmark rev -1 again
62 62
63 63 $ hg bookmark -r null Y
64 64
65 65 list bookmarks
66 66
67 67 $ hg bookmarks
68 68 X 0:f7b1eb17ad24
69 69 * X2 0:f7b1eb17ad24
70 70 Y -1:000000000000
71 71 $ hg bookmarks -l
72 72 X 0:f7b1eb17ad24
73 73 * X2 0:f7b1eb17ad24
74 74 Y -1:000000000000
75 75 $ hg bookmarks -l X Y
76 76 X 0:f7b1eb17ad24
77 77 Y -1:000000000000
78 78 $ hg bookmarks -l .
79 79 * X2 0:f7b1eb17ad24
80 80 $ hg bookmarks -l X A Y
81 81 abort: bookmark 'A' does not exist
82 82 [10]
83 83 $ hg bookmarks -l -r0
84 84 abort: cannot specify both --list and --rev
85 85 [10]
86 86 $ hg bookmarks -l --inactive
87 87 abort: cannot specify both --inactive and --list
88 88 [10]
89 89
90 90 $ hg log -T '{bookmarks % "{rev} {bookmark}\n"}'
91 91 0 X
92 92 0 X2
93 93
94 94 $ echo b > b
95 95 $ hg add b
96 96 $ hg commit -m 1 --config "$TESTHOOK"
97 97 test-hook-bookmark: X2: f7b1eb17ad24730a1651fccd46c43826d1bbc2ac -> 925d80f479bb026b0fb3deb27503780b13f74123
98 98
99 99 $ hg bookmarks -T '{rev}:{node|shortest} {bookmark} {desc|firstline}\n'
100 100 0:f7b1 X 0
101 101 1:925d X2 1
102 102 -1:0000 Y
103 103
104 104 $ hg bookmarks -Tjson
105 105 [
106 106 {
107 107 "active": false,
108 108 "bookmark": "X",
109 109 "node": "f7b1eb17ad24730a1651fccd46c43826d1bbc2ac",
110 110 "rev": 0
111 111 },
112 112 {
113 113 "active": true,
114 114 "bookmark": "X2",
115 115 "node": "925d80f479bb026b0fb3deb27503780b13f74123",
116 116 "rev": 1
117 117 },
118 118 {
119 119 "active": false,
120 120 "bookmark": "Y",
121 121 "node": "0000000000000000000000000000000000000000",
122 122 "rev": -1
123 123 }
124 124 ]
125 125
126 126 bookmarks revset
127 127
128 128 $ hg log -r 'bookmark()'
129 129 changeset: 0:f7b1eb17ad24
130 130 bookmark: X
131 131 user: test
132 132 date: Thu Jan 01 00:00:00 1970 +0000
133 133 summary: 0
134 134
135 135 changeset: 1:925d80f479bb
136 136 bookmark: X2
137 137 tag: tip
138 138 user: test
139 139 date: Thu Jan 01 00:00:00 1970 +0000
140 140 summary: 1
141 141
142 142 $ hg log -r 'bookmark(Y)'
143 143 $ hg log -r 'bookmark(X2)'
144 144 changeset: 1:925d80f479bb
145 145 bookmark: X2
146 146 tag: tip
147 147 user: test
148 148 date: Thu Jan 01 00:00:00 1970 +0000
149 149 summary: 1
150 150
151 151 $ hg log -r 'bookmark("re:X")'
152 152 changeset: 0:f7b1eb17ad24
153 153 bookmark: X
154 154 user: test
155 155 date: Thu Jan 01 00:00:00 1970 +0000
156 156 summary: 0
157 157
158 158 changeset: 1:925d80f479bb
159 159 bookmark: X2
160 160 tag: tip
161 161 user: test
162 162 date: Thu Jan 01 00:00:00 1970 +0000
163 163 summary: 1
164 164
165 165 $ hg log -r 'bookmark("literal:X")'
166 166 changeset: 0:f7b1eb17ad24
167 167 bookmark: X
168 168 user: test
169 169 date: Thu Jan 01 00:00:00 1970 +0000
170 170 summary: 0
171 171
172 172
173 173 "." is expanded to the active bookmark:
174 174
175 175 $ hg log -r 'bookmark(.)'
176 176 changeset: 1:925d80f479bb
177 177 bookmark: X2
178 178 tag: tip
179 179 user: test
180 180 date: Thu Jan 01 00:00:00 1970 +0000
181 181 summary: 1
182 182
183 183
184 184 but "literal:." is not since "." seems not a literal bookmark:
185 185
186 186 $ hg log -r 'bookmark("literal:.")'
187 187 abort: bookmark '.' does not exist
188 188 [255]
189 189
190 190 "." should fail if there's no active bookmark:
191 191
192 192 $ hg bookmark --inactive
193 193 $ hg log -r 'bookmark(.)'
194 194 abort: no active bookmark
195 195 [255]
196 196 $ hg log -r 'present(bookmark(.))'
197 197
198 198 $ hg log -r 'bookmark(unknown)'
199 199 abort: bookmark 'unknown' does not exist
200 200 [255]
201 201 $ hg log -r 'bookmark("literal:unknown")'
202 202 abort: bookmark 'unknown' does not exist
203 203 [255]
204 204 $ hg log -r 'bookmark("re:unknown")'
205 205 $ hg log -r 'present(bookmark("literal:unknown"))'
206 206 $ hg log -r 'present(bookmark("re:unknown"))'
207 207
208 208 $ hg help revsets | grep 'bookmark('
209 209 "bookmark([name])"
210 210
211 211 reactivate "X2"
212 212
213 213 $ hg update X2
214 214 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
215 215 (activating bookmark X2)
216 216
217 217 bookmarks X and X2 moved to rev 1, Y at rev -1
218 218
219 219 $ hg bookmarks
220 220 X 0:f7b1eb17ad24
221 221 * X2 1:925d80f479bb
222 222 Y -1:000000000000
223 223
224 224 bookmark rev 0 again
225 225
226 226 $ hg bookmark -r 0 Z
227 227
228 228 $ hg update X
229 229 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
230 230 (activating bookmark X)
231 231 $ echo c > c
232 232 $ hg add c
233 233 $ hg commit -m 2
234 234 created new head
235 235
236 236 bookmarks X moved to rev 2, Y at rev -1, Z at rev 0
237 237
238 238 $ hg bookmarks
239 239 * X 2:db815d6d32e6
240 240 X2 1:925d80f479bb
241 241 Y -1:000000000000
242 242 Z 0:f7b1eb17ad24
243 243
244 244 rename nonexistent bookmark
245 245
246 246 $ hg bookmark -m A B
247 247 abort: bookmark 'A' does not exist
248 248 [10]
249 249
250 250 rename to existent bookmark
251 251
252 252 $ hg bookmark -m X Y
253 253 abort: bookmark 'Y' already exists (use -f to force)
254 254 [255]
255 255
256 256 force rename to existent bookmark
257 257
258 258 $ hg bookmark -f -m X Y
259 259
260 260 rename bookmark using .
261 261
262 262 $ hg book rename-me
263 263 $ hg book -m . renamed --config "$TESTHOOK"
264 264 test-hook-bookmark: rename-me: db815d6d32e69058eadefc8cffbad37675707975 ->
265 265 test-hook-bookmark: renamed: -> db815d6d32e69058eadefc8cffbad37675707975
266 266 $ hg bookmark
267 267 X2 1:925d80f479bb
268 268 Y 2:db815d6d32e6
269 269 Z 0:f7b1eb17ad24
270 270 * renamed 2:db815d6d32e6
271 271 $ hg up -q Y
272 272 $ hg book -d renamed --config "$TESTHOOK"
273 273 test-hook-bookmark: renamed: db815d6d32e69058eadefc8cffbad37675707975 ->
274 274
275 275 rename bookmark using . with no active bookmark
276 276
277 277 $ hg book rename-me
278 278 $ hg book -i rename-me
279 279 $ hg book -m . renamed
280 280 abort: no active bookmark
281 281 [255]
282 282 $ hg up -q Y
283 283 $ hg book -d rename-me
284 284
285 285 delete bookmark using .
286 286
287 287 $ hg book delete-me
288 288 $ hg book -d .
289 289 $ hg bookmark
290 290 X2 1:925d80f479bb
291 291 Y 2:db815d6d32e6
292 292 Z 0:f7b1eb17ad24
293 293 $ hg up -q Y
294 294
295 295 delete bookmark using . with no active bookmark
296 296
297 297 $ hg book delete-me
298 298 $ hg book -i delete-me
299 299 $ hg book -d .
300 300 abort: no active bookmark
301 301 [255]
302 302 $ hg up -q Y
303 303 $ hg book -d delete-me
304 304
305 305 list bookmarks
306 306
307 307 $ hg bookmark
308 308 X2 1:925d80f479bb
309 309 * Y 2:db815d6d32e6
310 310 Z 0:f7b1eb17ad24
311 311
312 312 bookmarks from a revset
313 313 $ hg bookmark -r '.^1' REVSET
314 314 $ hg bookmark -r ':tip' TIP
315 315 $ hg up -q TIP
316 316 $ hg bookmarks
317 317 REVSET 0:f7b1eb17ad24
318 318 * TIP 2:db815d6d32e6
319 319 X2 1:925d80f479bb
320 320 Y 2:db815d6d32e6
321 321 Z 0:f7b1eb17ad24
322 322
323 323 $ hg bookmark -d REVSET
324 324 $ hg bookmark -d TIP
325 325
326 326 rename without new name or multiple names
327 327
328 328 $ hg bookmark -m Y
329 329 abort: new bookmark name required
330 330 [10]
331 331 $ hg bookmark -m Y Y2 Y3
332 332 abort: only one new bookmark name allowed
333 333 [10]
334 334
335 335 delete without name
336 336
337 337 $ hg bookmark -d
338 338 abort: bookmark name required
339 339 [10]
340 340
341 341 delete nonexistent bookmark
342 342
343 343 $ hg bookmark -d A
344 344 abort: bookmark 'A' does not exist
345 345 [10]
346 346
347 347 delete with --inactive
348 348
349 349 $ hg bookmark -d --inactive Y
350 350 abort: cannot specify both --inactive and --delete
351 351 [10]
352 352
353 353 bookmark name with spaces should be stripped
354 354
355 355 $ hg bookmark ' x y '
356 356
357 357 list bookmarks
358 358
359 359 $ hg bookmarks
360 360 X2 1:925d80f479bb
361 361 Y 2:db815d6d32e6
362 362 Z 0:f7b1eb17ad24
363 363 * x y 2:db815d6d32e6
364 364 $ hg log -T '{bookmarks % "{rev} {bookmark}\n"}'
365 365 2 Y
366 366 2 x y
367 367 1 X2
368 368 0 Z
369 369
370 370 look up stripped bookmark name
371 371
372 372 $ hg log -r '"x y"'
373 373 changeset: 2:db815d6d32e6
374 374 bookmark: Y
375 375 bookmark: x y
376 376 tag: tip
377 377 parent: 0:f7b1eb17ad24
378 378 user: test
379 379 date: Thu Jan 01 00:00:00 1970 +0000
380 380 summary: 2
381 381
382 382
383 383 reject bookmark name with newline
384 384
385 385 $ hg bookmark '
386 386 > '
387 387 abort: bookmark names cannot consist entirely of whitespace
388 388 [10]
389 389
390 390 $ hg bookmark -m Z '
391 391 > '
392 392 abort: bookmark names cannot consist entirely of whitespace
393 393 [10]
394 394
395 395 bookmark with reserved name
396 396
397 397 $ hg bookmark tip
398 398 abort: the name 'tip' is reserved
399 399 [10]
400 400
401 401 $ hg bookmark .
402 402 abort: the name '.' is reserved
403 403 [10]
404 404
405 405 $ hg bookmark null
406 406 abort: the name 'null' is reserved
407 407 [10]
408 408
409 409
410 410 bookmark with existing name
411 411
412 412 $ hg bookmark X2
413 413 abort: bookmark 'X2' already exists (use -f to force)
414 414 [255]
415 415
416 416 $ hg bookmark -m Y Z
417 417 abort: bookmark 'Z' already exists (use -f to force)
418 418 [255]
419 419
420 420 bookmark with name of branch
421 421
422 422 $ hg bookmark default
423 423 abort: a bookmark cannot have the name of an existing branch
424 424 [255]
425 425
426 426 $ hg bookmark -m Y default
427 427 abort: a bookmark cannot have the name of an existing branch
428 428 [255]
429 429
430 430 bookmark with integer name
431 431
432 432 $ hg bookmark 10
433 433 abort: cannot use an integer as a name
434 434 [10]
435 435
436 436 bookmark with a name that matches a node id
437 437 $ hg bookmark 925d80f479bb db815d6d32e6 --config "$TESTHOOK"
438 438 bookmark 925d80f479bb matches a changeset hash
439 439 (did you leave a -r out of an 'hg bookmark' command?)
440 440 bookmark db815d6d32e6 matches a changeset hash
441 441 (did you leave a -r out of an 'hg bookmark' command?)
442 442 test-hook-bookmark: 925d80f479bb: -> db815d6d32e69058eadefc8cffbad37675707975
443 443 test-hook-bookmark: db815d6d32e6: -> db815d6d32e69058eadefc8cffbad37675707975
444 444 $ hg bookmark -d 925d80f479bb
445 445 $ hg bookmark -d db815d6d32e6
446 446
447 447 $ cd ..
448 448
449 449 bookmark with a name that matches an ambiguous node id
450 450
451 451 $ hg init ambiguous
452 452 $ cd ambiguous
453 453 $ echo 0 > a
454 454 $ hg ci -qAm 0
455 455 $ for i in 1057 2857 4025; do
456 456 > hg up -q 0
457 457 > echo $i > a
458 458 > hg ci -qm $i
459 459 > done
460 460 $ hg up -q null
461 461 $ hg log -r0: -T '{rev}:{node}\n'
462 462 0:b4e73ffab476aa0ee32ed81ca51e07169844bc6a
463 463 1:c56256a09cd28e5764f32e8e2810d0f01e2e357a
464 464 2:c5623987d205cd6d9d8389bfc40fff9dbb670b48
465 465 3:c562ddd9c94164376c20b86b0b4991636a3bf84f
466 466
467 467 $ hg bookmark -r0 c562
468 468 $ hg bookmarks
469 469 c562 0:b4e73ffab476
470 470
471 471 $ cd ..
472 472
473 473 incompatible options
474 474
475 475 $ cd repo
476 476
477 477 $ hg bookmark -m Y -d Z
478 478 abort: cannot specify both --delete and --rename
479 479 [10]
480 480
481 481 $ hg bookmark -r 1 -d Z
482 482 abort: cannot specify both --delete and --rev
483 483 [10]
484 484
485 485 $ hg bookmark -r 1 -m Z Y
486 486 abort: cannot specify both --rename and --rev
487 487 [10]
488 488
489 489 force bookmark with existing name
490 490
491 491 $ hg bookmark -f X2 --config "$TESTHOOK"
492 492 test-hook-bookmark: X2: 925d80f479bb026b0fb3deb27503780b13f74123 -> db815d6d32e69058eadefc8cffbad37675707975
493 493
494 494 force bookmark back to where it was, should deactivate it
495 495
496 496 $ hg bookmark -fr1 X2
497 497 $ hg bookmarks
498 498 X2 1:925d80f479bb
499 499 Y 2:db815d6d32e6
500 500 Z 0:f7b1eb17ad24
501 501 x y 2:db815d6d32e6
502 502
503 503 forward bookmark to descendant without --force
504 504
505 505 $ hg bookmark Z
506 506 moving bookmark 'Z' forward from f7b1eb17ad24
507 507
508 508 list bookmarks
509 509
510 510 $ hg bookmark
511 511 X2 1:925d80f479bb
512 512 Y 2:db815d6d32e6
513 513 * Z 2:db815d6d32e6
514 514 x y 2:db815d6d32e6
515 515 $ hg log -T '{bookmarks % "{rev} {bookmark}\n"}'
516 516 2 Y
517 517 2 Z
518 518 2 x y
519 519 1 X2
520 520
521 521 revision but no bookmark name
522 522
523 523 $ hg bookmark -r .
524 524 abort: bookmark name required
525 525 [10]
526 526
527 527 bookmark name with whitespace only
528 528
529 529 $ hg bookmark ' '
530 530 abort: bookmark names cannot consist entirely of whitespace
531 531 [10]
532 532
533 533 $ hg bookmark -m Y ' '
534 534 abort: bookmark names cannot consist entirely of whitespace
535 535 [10]
536 536
537 537 invalid bookmark
538 538
539 539 $ hg bookmark 'foo:bar'
540 540 abort: ':' cannot be used in a name
541 541 [10]
542 542
543 543 $ hg bookmark 'foo
544 544 > bar'
545 545 abort: '\n' cannot be used in a name
546 546 [10]
547 547
548 548 the bookmark extension should be ignored now that it is part of core
549 549
550 550 $ echo "[extensions]" >> $HGRCPATH
551 551 $ echo "bookmarks=" >> $HGRCPATH
552 552 $ hg bookmarks
553 553 X2 1:925d80f479bb
554 554 Y 2:db815d6d32e6
555 555 * Z 2:db815d6d32e6
556 556 x y 2:db815d6d32e6
557 557
558 558 test summary
559 559
560 560 $ hg summary
561 561 parent: 2:db815d6d32e6 tip
562 562 2
563 563 branch: default
564 564 bookmarks: *Z Y x y
565 565 commit: (clean)
566 566 update: 1 new changesets, 2 branch heads (merge)
567 567 phases: 3 draft
568 568
569 569 test id
570 570
571 571 $ hg id
572 572 db815d6d32e6 tip Y/Z/x y
573 573
574 574 test rollback
575 575
576 576 $ echo foo > f1
577 577 $ hg bookmark tmp-rollback
578 578 $ hg ci -Amr
579 579 adding f1
580 580 $ hg bookmarks
581 581 X2 1:925d80f479bb
582 582 Y 2:db815d6d32e6
583 583 Z 2:db815d6d32e6
584 584 * tmp-rollback 3:2bf5cfec5864
585 585 x y 2:db815d6d32e6
586 586 $ hg rollback
587 587 repository tip rolled back to revision 2 (undo commit)
588 588 working directory now based on revision 2
589 589 $ hg bookmarks
590 590 X2 1:925d80f479bb
591 591 Y 2:db815d6d32e6
592 592 Z 2:db815d6d32e6
593 593 * tmp-rollback 2:db815d6d32e6
594 594 x y 2:db815d6d32e6
595 595 $ hg bookmark -f Z -r 1
596 596 $ hg rollback
597 597 repository tip rolled back to revision 2 (undo bookmark)
598 598 $ hg bookmarks
599 599 X2 1:925d80f479bb
600 600 Y 2:db815d6d32e6
601 601 Z 2:db815d6d32e6
602 602 * tmp-rollback 2:db815d6d32e6
603 603 x y 2:db815d6d32e6
604 604 $ hg bookmark -d tmp-rollback
605 605
606 606 activate bookmark on working dir parent without --force
607 607
608 608 $ hg bookmark --inactive Z
609 609 $ hg bookmark Z
610 610
611 611 deactivate current 'Z', but also add 'Y'
612 612
613 613 $ hg bookmark -d Y
614 614 $ hg bookmark --inactive Z Y
615 615 $ hg bookmark -l
616 616 X2 1:925d80f479bb
617 617 Y 2:db815d6d32e6
618 618 Z 2:db815d6d32e6
619 619 x y 2:db815d6d32e6
620 620 $ hg bookmark Z
621 621
622 622 bookmark wdir to activate it (issue6218)
623 623
624 624 $ hg bookmark -d Z
625 625 $ hg bookmark -r 'wdir()' Z
626 626 $ hg bookmark -l
627 627 X2 1:925d80f479bb
628 628 Y 2:db815d6d32e6
629 629 * Z 2:db815d6d32e6
630 630 x y 2:db815d6d32e6
631 631
632 632 test clone
633 633
634 634 $ hg bookmark -r 2 -i @
635 635 $ hg bookmark -r 2 -i a@
636 636 $ hg bookmarks
637 637 @ 2:db815d6d32e6
638 638 X2 1:925d80f479bb
639 639 Y 2:db815d6d32e6
640 640 * Z 2:db815d6d32e6
641 641 a@ 2:db815d6d32e6
642 642 x y 2:db815d6d32e6
643 643 $ hg clone . cloned-bookmarks
644 644 updating to bookmark @
645 645 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
646 646 $ hg -R cloned-bookmarks bookmarks
647 647 * @ 2:db815d6d32e6
648 648 X2 1:925d80f479bb
649 649 Y 2:db815d6d32e6
650 650 Z 2:db815d6d32e6
651 651 a@ 2:db815d6d32e6
652 652 x y 2:db815d6d32e6
653 653
654 654 test clone with pull protocol
655 655
656 656 $ hg clone --pull . cloned-bookmarks-pull
657 657 requesting all changes
658 658 adding changesets
659 659 adding manifests
660 660 adding file changes
661 661 added 3 changesets with 3 changes to 3 files (+1 heads)
662 662 new changesets f7b1eb17ad24:db815d6d32e6
663 663 updating to bookmark @
664 664 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
665 665 $ hg -R cloned-bookmarks-pull bookmarks
666 666 * @ 2:db815d6d32e6
667 667 X2 1:925d80f479bb
668 668 Y 2:db815d6d32e6
669 669 Z 2:db815d6d32e6
670 670 a@ 2:db815d6d32e6
671 671 x y 2:db815d6d32e6
672 672
673 673 delete multiple bookmarks at once
674 674
675 675 $ hg bookmark -d @ a@
676 676
677 677 test clone with a bookmark named "default" (issue3677)
678 678
679 679 $ hg bookmark -r 1 -f -i default
680 680 $ hg clone . cloned-bookmark-default
681 681 updating to branch default
682 682 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
683 683 $ hg -R cloned-bookmark-default bookmarks
684 684 X2 1:925d80f479bb
685 685 Y 2:db815d6d32e6
686 686 Z 2:db815d6d32e6
687 687 default 1:925d80f479bb
688 688 x y 2:db815d6d32e6
689 689 $ hg -R cloned-bookmark-default parents -q
690 690 2:db815d6d32e6
691 691 $ hg bookmark -d default
692 692
693 693 test clone with a specific revision
694 694
695 695 $ hg clone -r 925d80 . cloned-bookmarks-rev
696 696 adding changesets
697 697 adding manifests
698 698 adding file changes
699 699 added 2 changesets with 2 changes to 2 files
700 700 new changesets f7b1eb17ad24:925d80f479bb
701 701 updating to branch default
702 702 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
703 703 $ hg -R cloned-bookmarks-rev bookmarks
704 704 X2 1:925d80f479bb
705 705
706 706 test clone with update to a bookmark
707 707
708 708 $ hg clone -u Z . ../cloned-bookmarks-update
709 709 updating to branch default
710 710 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
711 711 $ hg -R ../cloned-bookmarks-update bookmarks
712 712 X2 1:925d80f479bb
713 713 Y 2:db815d6d32e6
714 714 * Z 2:db815d6d32e6
715 715 x y 2:db815d6d32e6
716 716
717 717 create bundle with two heads
718 718
719 719 $ hg clone . tobundle
720 720 updating to branch default
721 721 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
722 722 $ echo x > tobundle/x
723 723 $ hg -R tobundle add tobundle/x
724 724 $ hg -R tobundle commit -m'x'
725 725 $ hg -R tobundle update -r -2
726 726 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
727 727 $ echo y > tobundle/y
728 728 $ hg -R tobundle branch test
729 729 marked working directory as branch test
730 730 (branches are permanent and global, did you want a bookmark?)
731 731 $ hg -R tobundle add tobundle/y
732 732 $ hg -R tobundle commit -m'y'
733 733 $ hg -R tobundle bundle tobundle.hg
734 734 searching for changes
735 735 2 changesets found
736 736 $ hg unbundle tobundle.hg
737 737 adding changesets
738 738 adding manifests
739 739 adding file changes
740 740 added 2 changesets with 2 changes to 2 files (+1 heads)
741 741 new changesets 125c9a1d6df6:9ba5f110a0b3 (2 drafts)
742 742 (run 'hg heads' to see heads, 'hg merge' to merge)
743 743
744 744 update to active bookmark if it's not the parent
745 745
746 746 (it is known issue that fsmonitor can't handle nested repositories. In
747 747 this test scenario, cloned-bookmark-default and tobundle exist in the
748 748 working directory of current repository)
749 749
750 750 $ hg summary
751 751 parent: 2:db815d6d32e6
752 752 2
753 753 branch: default
754 754 bookmarks: *Z Y x y
755 755 commit: 1 added, 1 unknown (new branch head) (no-fsmonitor !)
756 756 commit: 1 added, * unknown (new branch head) (glob) (fsmonitor !)
757 757 update: 2 new changesets (update)
758 758 phases: 5 draft
759 759 $ hg update
760 760 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
761 761 updating bookmark Z
762 762 $ hg bookmarks
763 763 X2 1:925d80f479bb
764 764 Y 2:db815d6d32e6
765 765 * Z 3:125c9a1d6df6
766 766 x y 2:db815d6d32e6
767 767
768 768 pull --update works the same as pull && update
769 769
770 770 $ hg bookmark -r3 Y
771 771 moving bookmark 'Y' forward from db815d6d32e6
772 772 $ cp -R ../cloned-bookmarks-update ../cloned-bookmarks-manual-update
773 773 $ cp -R ../cloned-bookmarks-update ../cloned-bookmarks-manual-update-with-divergence
774 774
775 775 (manual version)
776 776
777 777 $ hg -R ../cloned-bookmarks-manual-update update Y
778 778 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
779 779 (activating bookmark Y)
780 780 $ hg -R ../cloned-bookmarks-manual-update pull .
781 781 pulling from .
782 782 searching for changes
783 783 adding changesets
784 784 adding manifests
785 785 adding file changes
786 786 updating bookmark Y
787 787 updating bookmark Z
788 788 added 2 changesets with 2 changes to 2 files (+1 heads)
789 789 new changesets 125c9a1d6df6:9ba5f110a0b3
790 790 (run 'hg heads' to see heads, 'hg merge' to merge)
791 791
792 792 (# tests strange but with --date crashing when bookmark have to move)
793 793
794 794 $ hg -R ../cloned-bookmarks-manual-update update -d 1986
795 795 abort: revision matching date not found
796 796 [10]
797 797 $ hg -R ../cloned-bookmarks-manual-update update
798 798 updating to active bookmark Y
799 799 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
800 800
801 801 (all in one version)
802 802
803 803 $ hg -R ../cloned-bookmarks-update update Y
804 804 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
805 805 (activating bookmark Y)
806 806 $ hg -R ../cloned-bookmarks-update pull --update .
807 807 pulling from .
808 808 searching for changes
809 809 adding changesets
810 810 adding manifests
811 811 adding file changes
812 812 updating bookmark Y
813 813 updating bookmark Z
814 814 added 2 changesets with 2 changes to 2 files (+1 heads)
815 815 new changesets 125c9a1d6df6:9ba5f110a0b3
816 816 updating to active bookmark Y
817 817 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
818 818
819 819 We warn about divergent during bare update to the active bookmark
820 820
821 821 $ hg -R ../cloned-bookmarks-manual-update-with-divergence update Y
822 822 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
823 823 (activating bookmark Y)
824 824 $ hg -R ../cloned-bookmarks-manual-update-with-divergence bookmarks -r X2 Y@1
825 825 $ hg -R ../cloned-bookmarks-manual-update-with-divergence bookmarks
826 826 X2 1:925d80f479bb
827 827 * Y 2:db815d6d32e6
828 828 Y@1 1:925d80f479bb
829 829 Z 2:db815d6d32e6
830 830 x y 2:db815d6d32e6
831 831 $ hg -R ../cloned-bookmarks-manual-update-with-divergence pull
832 832 pulling from $TESTTMP/repo
833 833 searching for changes
834 834 adding changesets
835 835 adding manifests
836 836 adding file changes
837 837 updating bookmark Y
838 838 updating bookmark Z
839 839 added 2 changesets with 2 changes to 2 files (+1 heads)
840 840 new changesets 125c9a1d6df6:9ba5f110a0b3
841 841 (run 'hg heads' to see heads, 'hg merge' to merge)
842 842 $ hg -R ../cloned-bookmarks-manual-update-with-divergence update
843 843 updating to active bookmark Y
844 844 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
845 845 1 other divergent bookmarks for "Y"
846 846
847 847 test wrongly formated bookmark
848 848
849 849 $ echo '' >> .hg/bookmarks
850 850 $ hg bookmarks
851 851 X2 1:925d80f479bb
852 852 Y 3:125c9a1d6df6
853 853 * Z 3:125c9a1d6df6
854 854 x y 2:db815d6d32e6
855 855 $ echo "Ican'thasformatedlines" >> .hg/bookmarks
856 856 $ hg bookmarks
857 857 malformed line in .hg/bookmarks: "Ican'thasformatedlines"
858 858 X2 1:925d80f479bb
859 859 Y 3:125c9a1d6df6
860 860 * Z 3:125c9a1d6df6
861 861 x y 2:db815d6d32e6
862 862
863 863 test missing revisions
864 864
865 865 $ echo "925d80f479b925d80f479bc925d80f479bccabab z" > .hg/bookmarks
866 866 $ hg book
867 867 no bookmarks set
868 868
869 869 test stripping a non-checked-out but bookmarked revision
870 870
871 871 $ hg log --graph
872 872 o changeset: 4:9ba5f110a0b3
873 873 | branch: test
874 874 | tag: tip
875 875 | parent: 2:db815d6d32e6
876 876 | user: test
877 877 | date: Thu Jan 01 00:00:00 1970 +0000
878 878 | summary: y
879 879 |
880 880 | @ changeset: 3:125c9a1d6df6
881 881 |/ user: test
882 882 | date: Thu Jan 01 00:00:00 1970 +0000
883 883 | summary: x
884 884 |
885 885 o changeset: 2:db815d6d32e6
886 886 | parent: 0:f7b1eb17ad24
887 887 | user: test
888 888 | date: Thu Jan 01 00:00:00 1970 +0000
889 889 | summary: 2
890 890 |
891 891 | o changeset: 1:925d80f479bb
892 892 |/ user: test
893 893 | date: Thu Jan 01 00:00:00 1970 +0000
894 894 | summary: 1
895 895 |
896 896 o changeset: 0:f7b1eb17ad24
897 897 user: test
898 898 date: Thu Jan 01 00:00:00 1970 +0000
899 899 summary: 0
900 900
901 901 $ hg book should-end-on-two
902 902 $ hg co --clean 4
903 903 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
904 904 (leaving bookmark should-end-on-two)
905 905 $ hg book four
906 906 $ hg --config extensions.mq= strip 3
907 907 saved backup bundle to * (glob)
908 908 should-end-on-two should end up pointing to revision 2, as that's the
909 909 tipmost surviving ancestor of the stripped revision.
910 910 $ hg log --graph
911 911 @ changeset: 3:9ba5f110a0b3
912 912 | branch: test
913 913 | bookmark: four
914 914 | tag: tip
915 915 | user: test
916 916 | date: Thu Jan 01 00:00:00 1970 +0000
917 917 | summary: y
918 918 |
919 919 o changeset: 2:db815d6d32e6
920 920 | bookmark: should-end-on-two
921 921 | parent: 0:f7b1eb17ad24
922 922 | user: test
923 923 | date: Thu Jan 01 00:00:00 1970 +0000
924 924 | summary: 2
925 925 |
926 926 | o changeset: 1:925d80f479bb
927 927 |/ user: test
928 928 | date: Thu Jan 01 00:00:00 1970 +0000
929 929 | summary: 1
930 930 |
931 931 o changeset: 0:f7b1eb17ad24
932 932 user: test
933 933 date: Thu Jan 01 00:00:00 1970 +0000
934 934 summary: 0
935 935
936 936
937 937 no-op update doesn't deactivate bookmarks
938 938
939 939 (it is known issue that fsmonitor can't handle nested repositories. In
940 940 this test scenario, cloned-bookmark-default and tobundle exist in the
941 941 working directory of current repository)
942 942
943 943 $ hg bookmarks
944 944 * four 3:9ba5f110a0b3
945 945 should-end-on-two 2:db815d6d32e6
946 946 $ hg up four
947 947 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
948 948 $ hg up
949 949 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
950 950 $ hg sum
951 951 parent: 3:9ba5f110a0b3 tip
952 952 y
953 953 branch: test
954 954 bookmarks: *four
955 955 commit: 2 unknown (clean) (no-fsmonitor !)
956 956 commit: * unknown (clean) (glob) (fsmonitor !)
957 957 update: (current)
958 958 phases: 4 draft
959 959
960 960 test clearing divergent bookmarks of linear ancestors
961 961
962 962 $ hg bookmark Z -r 0
963 963 $ hg bookmark Z@1 -r 1
964 964 $ hg bookmark Z@2 -r 2
965 965 $ hg bookmark Z@3 -r 3
966 966 $ hg book
967 967 Z 0:f7b1eb17ad24
968 968 Z@1 1:925d80f479bb
969 969 Z@2 2:db815d6d32e6
970 970 Z@3 3:9ba5f110a0b3
971 971 * four 3:9ba5f110a0b3
972 972 should-end-on-two 2:db815d6d32e6
973 973 $ hg bookmark Z
974 974 moving bookmark 'Z' forward from f7b1eb17ad24
975 975 $ hg book
976 976 * Z 3:9ba5f110a0b3
977 977 Z@1 1:925d80f479bb
978 978 four 3:9ba5f110a0b3
979 979 should-end-on-two 2:db815d6d32e6
980 980
981 981 test clearing only a single divergent bookmark across branches
982 982
983 983 $ hg book foo -r 1
984 984 $ hg book foo@1 -r 0
985 985 $ hg book foo@2 -r 2
986 986 $ hg book foo@3 -r 3
987 987 $ hg book foo -r foo@3
988 988 $ hg book
989 989 * Z 3:9ba5f110a0b3
990 990 Z@1 1:925d80f479bb
991 991 foo 3:9ba5f110a0b3
992 992 foo@1 0:f7b1eb17ad24
993 993 foo@2 2:db815d6d32e6
994 994 four 3:9ba5f110a0b3
995 995 should-end-on-two 2:db815d6d32e6
996 996
997 997 pull --update works the same as pull && update (case #2)
998 998
999 999 It is assumed that "hg pull" itself doesn't update current active
1000 1000 bookmark ('Y' in tests below).
1001 1001
1002 1002 $ hg pull -q ../cloned-bookmarks-update
1003 1003 divergent bookmark Z stored as Z@2
1004 1004
1005 1005 (pulling revision on another named branch with --update updates
1006 1006 neither the working directory nor current active bookmark: "no-op"
1007 1007 case)
1008 1008
1009 1009 $ echo yy >> y
1010 1010 $ hg commit -m yy
1011 1011
1012 1012 $ hg -R ../cloned-bookmarks-update bookmarks | grep ' Y '
1013 1013 * Y 3:125c9a1d6df6
1014 $ hg -R ../cloned-bookmarks-update path
1015 default = $TESTTMP/repo
1016 $ pwd
1017 $TESTTMP/repo
1014 1018 $ hg -R ../cloned-bookmarks-update pull . --update
1015 1019 pulling from .
1016 1020 searching for changes
1017 1021 adding changesets
1018 1022 adding manifests
1019 1023 adding file changes
1020 1024 divergent bookmark Z stored as Z@default
1021 1025 adding remote bookmark foo
1022 1026 adding remote bookmark four
1023 1027 adding remote bookmark should-end-on-two
1024 1028 added 1 changesets with 1 changes to 1 files
1025 1029 new changesets 5fb12f0f2d51
1026 1030 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1027 1031 $ hg -R ../cloned-bookmarks-update parents -T "{rev}:{node|short}\n"
1028 1032 3:125c9a1d6df6
1029 1033 $ hg -R ../cloned-bookmarks-update bookmarks | grep ' Y '
1030 1034 * Y 3:125c9a1d6df6
1031 1035
1032 1036 (pulling revision on current named/topological branch with --update
1033 1037 updates the working directory and current active bookmark)
1034 1038
1035 1039 $ hg update -C -q 125c9a1d6df6
1036 1040 $ echo xx >> x
1037 1041 $ hg commit -m xx
1038 1042
1039 1043 $ hg -R ../cloned-bookmarks-update bookmarks | grep ' Y '
1040 1044 * Y 3:125c9a1d6df6
1041 1045 $ hg -R ../cloned-bookmarks-update pull . --update
1042 1046 pulling from .
1043 1047 searching for changes
1044 1048 adding changesets
1045 1049 adding manifests
1046 1050 adding file changes
1047 1051 divergent bookmark Z stored as Z@default
1048 1052 added 1 changesets with 1 changes to 1 files
1049 1053 new changesets 81dcce76aa0b
1050 1054 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1051 1055 updating bookmark Y
1052 1056 $ hg -R ../cloned-bookmarks-update parents -T "{rev}:{node|short}\n"
1053 1057 6:81dcce76aa0b
1054 1058 $ hg -R ../cloned-bookmarks-update bookmarks | grep ' Y '
1055 1059 * Y 6:81dcce76aa0b
1056 1060
1057 1061 $ cd ..
1058 1062
1059 1063 ensure changelog is written before bookmarks
1060 1064 $ hg init orderrepo
1061 1065 $ cd orderrepo
1062 1066 $ touch a
1063 1067 $ hg commit -Aqm one
1064 1068 $ hg book mybook
1065 1069 $ echo a > a
1066 1070
1067 1071 $ cat > $TESTTMP/pausefinalize.py <<EOF
1068 1072 > from __future__ import absolute_import
1069 1073 > import os
1070 1074 > import time
1071 1075 > from mercurial import extensions, localrepo
1072 1076 > def transaction(orig, self, desc, report=None):
1073 1077 > tr = orig(self, desc, report)
1074 1078 > def sleep(*args, **kwargs):
1075 1079 > retry = 20
1076 1080 > while retry > 0 and not os.path.exists(b"$TESTTMP/unpause"):
1077 1081 > retry -= 1
1078 1082 > time.sleep(0.5)
1079 1083 > if os.path.exists(b"$TESTTMP/unpause"):
1080 1084 > os.remove(b"$TESTTMP/unpause")
1081 1085 > # It is important that this finalizer start with 'a', so it runs before
1082 1086 > # the changelog finalizer appends to the changelog.
1083 1087 > tr.addfinalize(b'a-sleep', sleep)
1084 1088 > return tr
1085 1089 >
1086 1090 > def extsetup(ui):
1087 1091 > # This extension inserts an artifical pause during the transaction
1088 1092 > # finalizer, so we can run commands mid-transaction-close.
1089 1093 > extensions.wrapfunction(localrepo.localrepository, 'transaction',
1090 1094 > transaction)
1091 1095 > EOF
1092 1096 $ hg commit -qm two --config extensions.pausefinalize=$TESTTMP/pausefinalize.py &
1093 1097 $ sleep 2
1094 1098 $ hg log -r .
1095 1099 changeset: 0:867bc5792c8c
1096 1100 bookmark: mybook
1097 1101 tag: tip
1098 1102 user: test
1099 1103 date: Thu Jan 01 00:00:00 1970 +0000
1100 1104 summary: one
1101 1105
1102 1106 $ hg bookmarks
1103 1107 * mybook 0:867bc5792c8c
1104 1108 $ touch $TESTTMP/unpause
1105 1109
1106 1110 $ cd ..
1107 1111
1108 1112 check whether HG_PENDING makes pending changes only in related
1109 1113 repositories visible to an external hook.
1110 1114
1111 1115 (emulate a transaction running concurrently by copied
1112 1116 .hg/bookmarks.pending in subsequent test)
1113 1117
1114 1118 $ cat > $TESTTMP/savepending.sh <<EOF
1115 1119 > cp .hg/bookmarks.pending .hg/bookmarks.pending.saved
1116 1120 > exit 1 # to avoid adding new bookmark for subsequent tests
1117 1121 > EOF
1118 1122
1119 1123 $ hg init unrelated
1120 1124 $ cd unrelated
1121 1125 $ echo a > a
1122 1126 $ hg add a
1123 1127 $ hg commit -m '#0'
1124 1128 $ hg --config hooks.pretxnclose="sh $TESTTMP/savepending.sh" bookmarks INVISIBLE
1125 1129 transaction abort!
1126 1130 rollback completed
1127 1131 abort: pretxnclose hook exited with status 1
1128 1132 [40]
1129 1133 $ cp .hg/bookmarks.pending.saved .hg/bookmarks.pending
1130 1134
1131 1135 (check visible bookmarks while transaction running in repo)
1132 1136
1133 1137 $ cat > $TESTTMP/checkpending.sh <<EOF
1134 1138 > echo "@repo"
1135 1139 > hg -R "$TESTTMP/repo" bookmarks
1136 1140 > echo "@unrelated"
1137 1141 > hg -R "$TESTTMP/unrelated" bookmarks
1138 1142 > exit 1 # to avoid adding new bookmark for subsequent tests
1139 1143 > EOF
1140 1144
1141 1145 $ cd ../repo
1142 1146 $ hg --config hooks.pretxnclose="sh $TESTTMP/checkpending.sh" bookmarks NEW
1143 1147 @repo
1144 1148 * NEW 6:81dcce76aa0b
1145 1149 X2 1:925d80f479bb
1146 1150 Y 4:125c9a1d6df6
1147 1151 Z 5:5fb12f0f2d51
1148 1152 Z@1 1:925d80f479bb
1149 1153 Z@2 4:125c9a1d6df6
1150 1154 foo 3:9ba5f110a0b3
1151 1155 foo@1 0:f7b1eb17ad24
1152 1156 foo@2 2:db815d6d32e6
1153 1157 four 3:9ba5f110a0b3
1154 1158 should-end-on-two 2:db815d6d32e6
1155 1159 x y 2:db815d6d32e6
1156 1160 @unrelated
1157 1161 no bookmarks set
1158 1162 transaction abort!
1159 1163 rollback completed
1160 1164 abort: pretxnclose hook exited with status 1
1161 1165 [40]
1162 1166
1163 1167 Check pretxnclose-bookmark can abort a transaction
1164 1168 --------------------------------------------------
1165 1169
1166 1170 add hooks:
1167 1171
1168 1172 * to prevent NEW bookmark on a non-public changeset
1169 1173 * to prevent non-forward move of NEW bookmark
1170 1174
1171 1175 $ cat << EOF >> .hg/hgrc
1172 1176 > [hooks]
1173 1177 > pretxnclose-bookmark.force-public = sh -c "(echo \$HG_BOOKMARK| grep -v NEW > /dev/null) || [ -z \"\$HG_NODE\" ] || (hg log -r \"\$HG_NODE\" -T '{phase}' | grep public > /dev/null)"
1174 1178 > pretxnclose-bookmark.force-forward = sh -c "(echo \$HG_BOOKMARK| grep -v NEW > /dev/null) || [ -z \"\$HG_NODE\" ] || (hg log -r \"max(\$HG_OLDNODE::\$HG_NODE)\" -T 'MATCH' | grep MATCH > /dev/null)"
1175 1179 > EOF
1176 1180
1177 1181 $ hg log -G -T phases
1178 1182 @ changeset: 6:81dcce76aa0b
1179 1183 | tag: tip
1180 1184 | phase: draft
1181 1185 | parent: 4:125c9a1d6df6
1182 1186 | user: test
1183 1187 | date: Thu Jan 01 00:00:00 1970 +0000
1184 1188 | summary: xx
1185 1189 |
1186 1190 | o changeset: 5:5fb12f0f2d51
1187 1191 | | branch: test
1188 1192 | | bookmark: Z
1189 1193 | | phase: draft
1190 1194 | | parent: 3:9ba5f110a0b3
1191 1195 | | user: test
1192 1196 | | date: Thu Jan 01 00:00:00 1970 +0000
1193 1197 | | summary: yy
1194 1198 | |
1195 1199 o | changeset: 4:125c9a1d6df6
1196 1200 | | bookmark: Y
1197 1201 | | bookmark: Z@2
1198 1202 | | phase: public
1199 1203 | | parent: 2:db815d6d32e6
1200 1204 | | user: test
1201 1205 | | date: Thu Jan 01 00:00:00 1970 +0000
1202 1206 | | summary: x
1203 1207 | |
1204 1208 | o changeset: 3:9ba5f110a0b3
1205 1209 |/ branch: test
1206 1210 | bookmark: foo
1207 1211 | bookmark: four
1208 1212 | phase: public
1209 1213 | user: test
1210 1214 | date: Thu Jan 01 00:00:00 1970 +0000
1211 1215 | summary: y
1212 1216 |
1213 1217 o changeset: 2:db815d6d32e6
1214 1218 | bookmark: foo@2
1215 1219 | bookmark: should-end-on-two
1216 1220 | bookmark: x y
1217 1221 | phase: public
1218 1222 | parent: 0:f7b1eb17ad24
1219 1223 | user: test
1220 1224 | date: Thu Jan 01 00:00:00 1970 +0000
1221 1225 | summary: 2
1222 1226 |
1223 1227 | o changeset: 1:925d80f479bb
1224 1228 |/ bookmark: X2
1225 1229 | bookmark: Z@1
1226 1230 | phase: public
1227 1231 | user: test
1228 1232 | date: Thu Jan 01 00:00:00 1970 +0000
1229 1233 | summary: 1
1230 1234 |
1231 1235 o changeset: 0:f7b1eb17ad24
1232 1236 bookmark: foo@1
1233 1237 phase: public
1234 1238 user: test
1235 1239 date: Thu Jan 01 00:00:00 1970 +0000
1236 1240 summary: 0
1237 1241
1238 1242
1239 1243 attempt to create on a default changeset
1240 1244
1241 1245 $ hg bookmark -r 81dcce76aa0b NEW
1242 1246 transaction abort!
1243 1247 rollback completed
1244 1248 abort: pretxnclose-bookmark.force-public hook exited with status 1
1245 1249 [40]
1246 1250
1247 1251 create on a public changeset
1248 1252
1249 1253 $ hg bookmark -r 9ba5f110a0b3 NEW
1250 1254
1251 1255 move to the other branch
1252 1256
1253 1257 $ hg bookmark -f -r 125c9a1d6df6 NEW
1254 1258 transaction abort!
1255 1259 rollback completed
1256 1260 abort: pretxnclose-bookmark.force-forward hook exited with status 1
1257 1261 [40]
General Comments 0
You need to be logged in to leave comments. Login now