2017-07-13 21:04:56 +03:00
|
|
|
$ cat >> $HGRCPATH << EOF
|
|
|
|
> [extensions]
|
2017-07-21 20:50:30 +03:00
|
|
|
> blackbox=
|
2017-07-13 21:04:56 +03:00
|
|
|
> fbamend=$TESTDIR/../hgext3rd/fbamend
|
|
|
|
> drawdag=$RUNTESTDIR/drawdag.py
|
|
|
|
> [experimental]
|
|
|
|
> evolution = all
|
2017-07-21 20:50:30 +03:00
|
|
|
> [blackbox]
|
|
|
|
> track = command, commandfinish, commandexception,
|
|
|
|
> pinnednodes
|
2017-07-13 21:04:56 +03:00
|
|
|
> EOF
|
|
|
|
|
|
|
|
$ hg init
|
|
|
|
$ hg debugdrawdag <<'EOS'
|
|
|
|
> B C # amend: B -> C
|
|
|
|
> |/
|
|
|
|
> A
|
|
|
|
> EOS
|
|
|
|
|
|
|
|
$ rm .hg/localtags
|
|
|
|
$ hg log -G -T '{rev} {desc}\n'
|
|
|
|
o 2 C
|
|
|
|
|
|
|
|
|
o 0 A
|
|
|
|
|
|
|
|
$ hg log -G -T '{rev} {desc}\n' --hidden
|
|
|
|
o 2 C
|
|
|
|
|
|
|
|
|
| x 1 B
|
|
|
|
|/
|
|
|
|
o 0 A
|
|
|
|
|
|
|
|
Changing working copy parent pins a node
|
|
|
|
|
|
|
|
$ hg update 1 --hidden -q
|
|
|
|
$ hg update 0 -q
|
|
|
|
$ hg log -G -T '{rev} {desc}\n'
|
|
|
|
o 2 C
|
|
|
|
|
|
|
|
|
| x 1 B
|
|
|
|
|/
|
|
|
|
@ 0 A
|
|
|
|
|
|
|
|
Strip/prune unpins a node
|
|
|
|
|
|
|
|
$ hg prune 1 -q
|
2017-09-20 17:55:56 +03:00
|
|
|
advice: `hg hide` commnand provides a better UI for hiding commits
|
2017-07-13 21:04:56 +03:00
|
|
|
$ hg log -G -T '{rev} {desc}\n'
|
|
|
|
o 2 C
|
|
|
|
|
|
|
|
|
@ 0 A
|
|
|
|
|
|
|
|
Bookmark pins nodes even after removed
|
|
|
|
|
|
|
|
$ hg bookmark -ir 1 BOOK --hidden -q
|
|
|
|
$ hg bookmark -d BOOK -q
|
|
|
|
$ hg log -G -T '{rev} {desc}\n'
|
|
|
|
o 2 C
|
|
|
|
|
|
|
|
|
| x 1 B
|
|
|
|
|/
|
|
|
|
@ 0 A
|
|
|
|
|
2017-07-21 20:50:30 +03:00
|
|
|
Check blackbox logs
|
|
|
|
|
|
|
|
$ hg blackbox -l 10000
|
2017-09-22 09:32:55 +03:00
|
|
|
*> init exited 0 after * seconds (glob)
|
2017-07-21 20:50:30 +03:00
|
|
|
*> debugdrawdag (glob)
|
|
|
|
*> pinnednodes: ['debugdrawdag'] newpin=[] newunpin=['112478962961'] before=[] after=[] (glob)
|
|
|
|
*> debugdrawdag exited 0 after * (glob)
|
|
|
|
*> log -G -T '{rev} {desc}\n' (glob)
|
|
|
|
*> log -G -T '{rev} {desc}\n' exited 0 after * (glob)
|
|
|
|
*> log -G -T '{rev} {desc}\n' --hidden (glob)
|
|
|
|
*> log -G -T '{rev} {desc}\n' --hidden exited 0 after * (glob)
|
|
|
|
*> update 1 --hidden -q (glob)
|
|
|
|
*> pinnednodes: ['update', '1', '--hidden', '-q'] newpin=['112478962961'] newunpin=[] before=[] after=['112478962961'] (glob)
|
|
|
|
*> update 1 --hidden -q exited 0 after * (glob)
|
|
|
|
*> update 0 -q (glob)
|
|
|
|
*> update 0 -q exited 0 after * (glob)
|
|
|
|
*> log -G -T '{rev} {desc}\n' (glob)
|
|
|
|
*> log -G -T '{rev} {desc}\n' exited 0 after * (glob)
|
|
|
|
*> prune 1 -q (glob)
|
|
|
|
*> pinnednodes: ['prune', '1', '-q'] newpin=[] newunpin=['112478962961'] before=['112478962961'] after=[] (glob)
|
|
|
|
*> prune 1 -q exited 0 after * (glob)
|
|
|
|
*> log -G -T '{rev} {desc}\n' (glob)
|
|
|
|
*> log -G -T '{rev} {desc}\n' exited 0 after * (glob)
|
|
|
|
*> bookmark -ir 1 BOOK --hidden -q (glob)
|
|
|
|
*> pinnednodes: ['bookmark', '-ir', '1', 'BOOK', '--hidden', '-q'] newpin=['112478962961'] newunpin=[] before=[] after=['112478962961'] (glob)
|
|
|
|
*> bookmark -ir 1 BOOK --hidden -q exited 0 after * (glob)
|
|
|
|
*> bookmark -d BOOK -q (glob)
|
|
|
|
*> bookmark -d BOOK -q exited 0 after * (glob)
|
|
|
|
*> log -G -T '{rev} {desc}\n' (glob)
|
|
|
|
*> log -G -T '{rev} {desc}\n' exited 0 after * (glob)
|
|
|
|
*> blackbox -l 10000 (glob)
|
|
|
|
|
2017-07-21 08:22:38 +03:00
|
|
|
The order matters - putting bookmarks or moving working copy on non-obsoleted
|
|
|
|
commits do not pin them. Test this using "debugobsolete" which will not call
|
|
|
|
"createmarkers".
|
|
|
|
|
|
|
|
Obsolete working copy, and move working copy away should make things disappear
|
|
|
|
|
|
|
|
$ rm -rf .hg && hg init && hg debugdrawdag <<'EOS'
|
|
|
|
> C E
|
|
|
|
> | |
|
|
|
|
> B D
|
|
|
|
> |/
|
|
|
|
> A
|
|
|
|
> EOS
|
|
|
|
|
|
|
|
$ hg up -q E
|
|
|
|
$ hg debugobsolete `HGPLAIN=1 hg log -r E -T '{node}'`
|
|
|
|
obsoleted 1 changesets
|
|
|
|
$ hg tag --local --remove E
|
|
|
|
$ hg log -G -T '{rev} {desc}\n'
|
|
|
|
@ 4 E
|
|
|
|
|
|
|
|
|
| o 3 C
|
|
|
|
| |
|
|
|
|
o | 2 D
|
|
|
|
| |
|
|
|
|
| o 1 B
|
|
|
|
|/
|
|
|
|
o 0 A
|
|
|
|
|
|
|
|
$ hg debugobsolete `HGPLAIN=1 hg log -r D -T '{node}'`
|
|
|
|
obsoleted 1 changesets
|
|
|
|
$ hg tag --local --remove D
|
|
|
|
$ hg log -G -T '{rev} {desc}\n'
|
|
|
|
@ 4 E
|
|
|
|
|
|
|
|
|
| o 3 C
|
|
|
|
| |
|
|
|
|
x | 2 D
|
|
|
|
| |
|
|
|
|
| o 1 B
|
|
|
|
|/
|
|
|
|
o 0 A
|
|
|
|
|
|
|
|
$ hg update -q C
|
|
|
|
$ hg log -G -T '{rev} {desc}\n'
|
|
|
|
@ 3 C
|
|
|
|
|
|
|
|
|
o 1 B
|
|
|
|
|
|
|
|
|
o 0 A
|
|
|
|
|
|
|
|
Having a bookmark on a commit, obsolete the commit, remove the bookmark
|
|
|
|
|
|
|
|
$ rm -rf .hg && hg init && hg debugdrawdag <<'EOS'
|
|
|
|
> C E
|
|
|
|
> | |
|
|
|
|
> B D
|
|
|
|
> |/
|
|
|
|
> A
|
|
|
|
> EOS
|
|
|
|
|
|
|
|
$ hg bookmark -i book-e -r E
|
|
|
|
$ hg debugobsolete `HGPLAIN=1 hg log -r D -T '{node}'`
|
|
|
|
obsoleted 1 changesets
|
|
|
|
$ hg debugobsolete `HGPLAIN=1 hg log -r E -T '{node}'`
|
|
|
|
obsoleted 1 changesets
|
|
|
|
$ rm .hg/localtags
|
|
|
|
$ hg log -G -T '{rev} {desc} {bookmarks}\n'
|
|
|
|
x 4 E book-e
|
|
|
|
|
|
|
|
|
| o 3 C
|
|
|
|
| |
|
|
|
|
x | 2 D
|
|
|
|
| |
|
|
|
|
| o 1 B
|
|
|
|
|/
|
|
|
|
o 0 A
|
|
|
|
|
|
|
|
$ hg bookmark -d book-e
|
|
|
|
$ hg log -G -T '{rev} {desc} {bookmarks}\n'
|
|
|
|
o 3 C
|
|
|
|
|
|
|
|
|
o 1 B
|
|
|
|
|
|
|
|
|
o 0 A
|
|
|
|
|