test-obsolete.t
1589 lines
| 56.4 KiB
| text/troff
|
Tads3Lexer
/ tests / test-obsolete.t
|
r17171 | $ cat >> $HGRCPATH << EOF | ||
> [phases] | ||||
> # public changeset are not obsolete | ||||
> publish=false | ||||
|
r21978 | > [ui] | ||
|
r34848 | > logtemplate="{rev}:{node|short} ({phase}{if(obsolete, ' *{obsolete}*')}{if(instabilities, ' {instabilities}')}) [{tags} {bookmarks}] {desc|firstline}{if(obsfate, " [{join(obsfate, "; ")}]")}\n" | ||
|
r17171 | > EOF | ||
|
r17071 | $ mkcommit() { | ||
> echo "$1" > "$1" | ||||
> hg add "$1" | ||||
> hg ci -m "add $1" | ||||
> } | ||||
$ getid() { | ||||
|
r24162 | > hg log -T "{node}\n" --hidden -r "desc('$1')" | ||
|
r17071 | > } | ||
|
r17252 | $ cat > debugkeys.py <<EOF | ||
> def reposetup(ui, repo): | ||||
> class debugkeysrepo(repo.__class__): | ||||
> def listkeys(self, namespace): | ||||
|
r36512 | > ui.write(b'listkeys %s\n' % (namespace,)) | ||
|
r17252 | > return super(debugkeysrepo, self).listkeys(namespace) | ||
> | ||||
> if repo.local(): | ||||
> repo.__class__ = debugkeysrepo | ||||
> EOF | ||||
|
r17071 | |||
$ hg init tmpa | ||||
$ cd tmpa | ||||
|
r17296 | $ mkcommit kill_me | ||
Checking that the feature is properly disabled | ||||
$ hg debugobsolete -d '0 0' `getid kill_me` -u babar | ||||
|
r22950 | abort: creating obsolete markers is not enabled on this repo | ||
|
r17296 | [255] | ||
Enabling it | ||||
|
r22955 | $ cat >> $HGRCPATH << EOF | ||
> [experimental] | ||||
|
r34867 | > evolution=exchange | ||
> evolution.createmarkers=True | ||||
|
r17296 | > EOF | ||
|
r17071 | |||
Killing a single changeset without replacement | ||||
|
r17292 | $ hg debugobsolete 0 | ||
abort: changeset references must be full hexadecimal node identifiers | ||||
[255] | ||||
$ hg debugobsolete '00' | ||||
abort: changeset references must be full hexadecimal node identifiers | ||||
[255] | ||||
|
r17071 | $ hg debugobsolete -d '0 0' `getid kill_me` -u babar | ||
|
r33542 | obsoleted 1 changesets | ||
|
r17074 | $ hg debugobsolete | ||
|
r22220 | 97b7c2d76b1845ed3eb988cd612611e72406cef0 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'babar'} | ||
|
r18464 | |||
(test that mercurial is not confused) | ||||
$ hg up null --quiet # having 0 as parent prevents it to be hidden | ||||
$ hg tip | ||||
|
r21978 | -1:000000000000 (public) [tip ] | ||
|
r18464 | $ hg up --hidden tip --quiet | ||
|
r35536 | updating to a hidden changeset 97b7c2d76b18 | ||
|
r35729 | (hidden revision '97b7c2d76b18' is pruned) | ||
|
r22177 | |||
Killing a single changeset with itself should fail | ||||
(simple local safeguard) | ||||
$ hg debugobsolete `getid kill_me` `getid kill_me` | ||||
abort: bad obsmarker input: in-marker cycle with 97b7c2d76b1845ed3eb988cd612611e72406cef0 | ||||
[255] | ||||
|
r17071 | $ cd .. | ||
Killing a single changeset with replacement | ||||
|
r22948 | (and testing the format option) | ||
|
r17071 | |||
$ hg init tmpb | ||||
$ cd tmpb | ||||
$ mkcommit a | ||||
$ mkcommit b | ||||
$ mkcommit original_c | ||||
$ hg up "desc('b')" | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ mkcommit new_c | ||||
created new head | ||||
|
r17390 | $ hg log -r 'hidden()' --template '{rev}:{node|short} {desc}\n' --hidden | ||
|
r23094 | $ hg debugobsolete --config format.obsstore-version=0 --flag 12 `getid original_c` `getid new_c` -d '121 120' | ||
|
r33542 | obsoleted 1 changesets | ||
|
r17390 | $ hg log -r 'hidden()' --template '{rev}:{node|short} {desc}\n' --hidden | ||
2:245bde4270cd add original_c | ||||
|
r21033 | $ hg debugrevlog -cd | ||
|
r22311 | # rev p1rev p2rev start end deltastart base p1 p2 rawsize totalsize compression heads chainlen | ||
0 -1 -1 0 59 0 0 0 0 58 58 0 1 0 | ||||
1 0 -1 59 118 59 59 0 0 58 116 0 1 0 | ||||
|
r23285 | 2 1 -1 118 193 118 118 59 0 76 192 0 1 0 | ||
3 1 -1 193 260 193 193 59 0 66 258 0 2 0 | ||||
|
r17074 | $ hg debugobsolete | ||
|
r23094 | 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||
|
r17071 | |||
|
r22948 | (check for version number of the obsstore) | ||
$ dd bs=1 count=1 if=.hg/store/obsstore 2>/dev/null | ||||
\x00 (no-eol) (esc) | ||||
|
r17071 | do it again (it read the obsstore before adding new changeset) | ||
$ hg up '.^' | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ mkcommit new_2_c | ||||
created new head | ||||
$ hg debugobsolete -d '1337 0' `getid new_c` `getid new_2_c` | ||||
|
r33542 | obsoleted 1 changesets | ||
|
r17074 | $ hg debugobsolete | ||
|
r23094 | 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||
|
r22220 | cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'} | ||
|
r17071 | |||
Register two markers with a missing node | ||||
$ hg up '.^' | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ mkcommit new_3_c | ||||
created new head | ||||
$ hg debugobsolete -d '1338 0' `getid new_2_c` 1337133713371337133713371337133713371337 | ||||
|
r33542 | obsoleted 1 changesets | ||
|
r17071 | $ hg debugobsolete -d '1339 0' 1337133713371337133713371337133713371337 `getid new_3_c` | ||
|
r17074 | $ hg debugobsolete | ||
|
r23094 | 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||
|
r22220 | cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'} | ||
ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||||
1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||||
|
r17075 | |||
|
r28613 | Test the --index option of debugobsolete command | ||
$ hg debugobsolete --index | ||||
0 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||||
1 cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'} | ||||
2 ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||||
3 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||||
|
r17774 | Refuse pathological nullid successors | ||
$ hg debugobsolete -d '9001 0' 1337133713371337133713371337133713371337 0000000000000000000000000000000000000000 | ||||
transaction abort! | ||||
rollback completed | ||||
abort: bad obsolescence marker detected: invalid successors nullid | ||||
[255] | ||||
|
r17119 | Check that graphlog detect that a changeset is obsolete: | ||
|
r20117 | $ hg log -G | ||
|
r21978 | @ 5:5601fb93a350 (draft) [tip ] add new_3_c | ||
|
r17119 | | | ||
|
r21978 | o 1:7c3bad9141dc (draft) [ ] add b | ||
|
r17119 | | | ||
|
r21978 | o 0:1f0dee641bb7 (draft) [ ] add a | ||
|
r17119 | |||
|
r18268 | check that heads does not report them | ||
$ hg heads | ||||
|
r21978 | 5:5601fb93a350 (draft) [tip ] add new_3_c | ||
|
r18268 | $ hg heads --hidden | ||
|
r21978 | 5:5601fb93a350 (draft) [tip ] add new_3_c | ||
|
r34852 | 4:ca819180edb9 (draft *obsolete*) [ ] add new_2_c [rewritten as 5:5601fb93a350] | ||
3:cdbce2fbb163 (draft *obsolete*) [ ] add new_c [rewritten as 4:ca819180edb9] | ||||
2:245bde4270cd (draft *obsolete*) [ ] add original_c [rewritten as 3:cdbce2fbb163] | ||||
|
r18268 | |||
check that summary does not report them | ||||
$ hg init ../sink | ||||
$ echo '[paths]' >> .hg/hgrc | ||||
$ echo 'default=../sink' >> .hg/hgrc | ||||
$ hg summary --remote | ||||
parent: 5:5601fb93a350 tip | ||||
add new_3_c | ||||
branch: default | ||||
commit: (clean) | ||||
update: (current) | ||||
|
r25382 | phases: 3 draft | ||
|
r18268 | remote: 3 outgoing | ||
$ hg summary --remote --hidden | ||||
parent: 5:5601fb93a350 tip | ||||
add new_3_c | ||||
branch: default | ||||
commit: (clean) | ||||
update: 3 new changesets, 4 branch heads (merge) | ||||
|
r25382 | phases: 6 draft | ||
|
r18268 | remote: 3 outgoing | ||
|
r18423 | check that various commands work well with filtering | ||
$ hg tip | ||||
|
r21978 | 5:5601fb93a350 (draft) [tip ] add new_3_c | ||
|
r18423 | $ hg log -r 6 | ||
abort: unknown revision '6'! | ||||
[255] | ||||
$ hg log -r 4 | ||||
|
r35589 | abort: hidden revision '4' was rewritten as: 5601fb93a350! | ||
|
r23046 | (use --hidden to access hidden revisions) | ||
|
r18423 | [255] | ||
|
r23062 | $ hg debugrevspec 'rev(6)' | ||
$ hg debugrevspec 'rev(4)' | ||||
|
r24204 | $ hg debugrevspec 'null' | ||
-1 | ||||
|
r18423 | |||
|
r17119 | Check that public changeset are not accounted as obsolete: | ||
|
r18267 | $ hg --hidden phase --public 2 | ||
|
r35727 | 1 new phase-divergent changesets | ||
|
r20117 | $ hg log -G | ||
|
r33652 | @ 5:5601fb93a350 (draft phase-divergent) [tip ] add new_3_c | ||
|
r17119 | | | ||
|
r21978 | | o 2:245bde4270cd (public) [ ] add original_c | ||
|/ | ||||
o 1:7c3bad9141dc (public) [ ] add b | ||||
|
r17119 | | | ||
|
r21978 | o 0:1f0dee641bb7 (public) [ ] add a | ||
|
r17119 | |||
|
r17829 | And that bumped changeset are detected | ||
-------------------------------------- | ||||
If we didn't filtered obsolete changesets out, 3 and 4 would show up too. Also | ||||
note that the bumped changeset (5:5601fb93a350) is not a direct successor of | ||||
the public changeset | ||||
|
r33771 | $ hg log --hidden -r 'phasedivergent()' | ||
|
r33652 | 5:5601fb93a350 (draft phase-divergent) [tip ] add new_3_c | ||
|
r17829 | |||
|
r17834 | And that we can't push bumped changeset | ||
|
r18085 | $ hg push ../tmpa -r 0 --force #(make repo related) | ||
|
r18015 | pushing to ../tmpa | ||
searching for changes | ||||
|
r18104 | warning: repository is unrelated | ||
|
r18015 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files (+1 heads) | ||||
|
r17834 | $ hg push ../tmpa | ||
pushing to ../tmpa | ||||
searching for changes | ||||
|
r33652 | abort: push includes phase-divergent changeset: 5601fb93a350! | ||
|
r17834 | [255] | ||
|
r17831 | Fixing "bumped" situation | ||
We need to create a clone of 5 and add a special marker with a flag | ||||
|
r27385 | $ hg summary | ||
|
r33652 | parent: 5:5601fb93a350 tip (phase-divergent) | ||
|
r27385 | add new_3_c | ||
branch: default | ||||
commit: (clean) | ||||
update: 1 new changesets, 2 branch heads (merge) | ||||
phases: 1 draft | ||||
|
r33652 | phase-divergent: 1 changesets | ||
|
r17831 | $ hg up '5^' | ||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg revert -ar 5 | ||||
adding new_3_c | ||||
$ hg ci -m 'add n3w_3_c' | ||||
created new head | ||||
$ hg debugobsolete -d '1338 0' --flags 1 `getid new_3_c` `getid n3w_3_c` | ||||
|
r33542 | obsoleted 1 changesets | ||
|
r33771 | $ hg log -r 'phasedivergent()' | ||
|
r17831 | $ hg log -G | ||
|
r21978 | @ 6:6f9641995072 (draft) [tip ] add n3w_3_c | ||
|
r17831 | | | ||
|
r21978 | | o 2:245bde4270cd (public) [ ] add original_c | ||
|/ | ||||
o 1:7c3bad9141dc (public) [ ] add b | ||||
|
r17831 | | | ||
|
r21978 | o 0:1f0dee641bb7 (public) [ ] add a | ||
|
r17831 | |||
r32626 | Basic exclusive testing | |||
$ hg log -G --hidden | ||||
@ 6:6f9641995072 (draft) [tip ] add n3w_3_c | ||||
| | ||||
|
r34852 | | x 5:5601fb93a350 (draft *obsolete*) [ ] add new_3_c [rewritten as 6:6f9641995072] | ||
r32626 | |/ | |||
|
r34852 | | x 4:ca819180edb9 (draft *obsolete*) [ ] add new_2_c [rewritten as 5:5601fb93a350] | ||
r32626 | |/ | |||
|
r34852 | | x 3:cdbce2fbb163 (draft *obsolete*) [ ] add new_c [rewritten as 4:ca819180edb9] | ||
r32626 | |/ | |||
| o 2:245bde4270cd (public) [ ] add original_c | ||||
|/ | ||||
o 1:7c3bad9141dc (public) [ ] add b | ||||
| | ||||
o 0:1f0dee641bb7 (public) [ ] add a | ||||
$ hg debugobsolete --rev 6f9641995072 | ||||
1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||||
245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||||
5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||||
ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||||
cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'} | ||||
$ hg debugobsolete --rev 6f9641995072 --exclusive | ||||
5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||||
$ hg debugobsolete --rev 5601fb93a350 --hidden | ||||
1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||||
245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||||
ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||||
cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'} | ||||
$ hg debugobsolete --rev 5601fb93a350 --hidden --exclusive | ||||
$ hg debugobsolete --rev 5601fb93a350+6f9641995072 --hidden --exclusive | ||||
1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||||
5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||||
ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||||
|
r24681 | $ cd .. | ||
Revision 0 is hidden | ||||
-------------------- | ||||
$ hg init rev0hidden | ||||
$ cd rev0hidden | ||||
$ mkcommit kill0 | ||||
$ hg up -q null | ||||
$ hg debugobsolete `getid kill0` | ||||
|
r33542 | obsoleted 1 changesets | ||
|
r24681 | $ mkcommit a | ||
$ mkcommit b | ||||
Should pick the first visible revision as "repo" node | ||||
$ hg archive ../archive-null | ||||
$ cat ../archive-null/.hg_archival.txt | ||||
repo: 1f0dee641bb7258c56bd60e93edfa2405381c41e | ||||
node: 7c3bad9141dcb46ff89abf5f61856facd56e476c | ||||
branch: default | ||||
latesttag: null | ||||
latesttagdistance: 2 | ||||
changessincelatesttag: 2 | ||||
|
r17831 | |||
|
r17075 | $ cd .. | ||
|
r35728 | Can disable transaction summary report | ||
$ hg init transaction-summary | ||||
$ cd transaction-summary | ||||
$ mkcommit a | ||||
$ mkcommit b | ||||
$ hg up -q null | ||||
$ hg --config experimental.evolution.report-instabilities=false debugobsolete `getid a` | ||||
obsoleted 1 changesets | ||||
$ cd .. | ||||
|
r17075 | Exchange Test | ||
============================ | ||||
Destination repo does not have any data | ||||
--------------------------------------- | ||||
|
r18493 | Simple incoming test | ||
$ hg init tmpc | ||||
$ cd tmpc | ||||
$ hg incoming ../tmpb | ||||
comparing with ../tmpb | ||||
|
r21978 | 0:1f0dee641bb7 (public) [ ] add a | ||
1:7c3bad9141dc (public) [ ] add b | ||||
2:245bde4270cd (public) [ ] add original_c | ||||
6:6f9641995072 (draft) [tip ] add n3w_3_c | ||||
|
r18493 | |||
|
r17075 | Try to pull markers | ||
|
r17206 | (extinct changeset are excluded but marker are pushed) | ||
|
r17075 | |||
$ hg pull ../tmpb | ||||
pulling from ../tmpb | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
|
r17206 | added 4 changesets with 4 changes to 4 files (+1 heads) | ||
|
r25351 | 5 new obsolescence markers | ||
|
r34662 | new changesets 1f0dee641bb7:6f9641995072 | ||
|
r17075 | (run 'hg heads' to see heads, 'hg merge' to merge) | ||
$ hg debugobsolete | ||||
|
r25118 | 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||
|
r23094 | 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||
|
r25118 | 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||
|
r22220 | ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||
|
r25118 | cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'} | ||
|
r17126 | |||
Rollback//Transaction support | ||||
$ hg debugobsolete -d '1340 0' aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb | ||||
$ hg debugobsolete | ||||
|
r25118 | 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||
|
r23094 | 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||
|
r25118 | 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||
|
r22220 | ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||
|
r25118 | cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'} | ||
|
r22220 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 0 (Thu Jan 01 00:22:20 1970 +0000) {'user': 'test'} | ||
|
r17126 | $ hg rollback -n | ||
|
r17206 | repository tip rolled back to revision 3 (undo debugobsolete) | ||
|
r17126 | $ hg rollback | ||
|
r17206 | repository tip rolled back to revision 3 (undo debugobsolete) | ||
|
r17126 | $ hg debugobsolete | ||
|
r25118 | 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||
|
r23094 | 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||
|
r25118 | 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||
|
r22220 | ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||
|
r25118 | cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'} | ||
|
r17075 | |||
$ cd .. | ||||
|
r18492 | Try to push markers | ||
|
r17075 | |||
$ hg init tmpd | ||||
$ hg -R tmpb push tmpd | ||||
pushing to tmpd | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
|
r17169 | added 4 changesets with 4 changes to 4 files (+1 heads) | ||
|
r25351 | 5 new obsolescence markers | ||
|
r22349 | $ hg -R tmpd debugobsolete | sort | ||
1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||||
|
r23094 | 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||
|
r22349 | 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||
ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||||
|
r22220 | cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'} | ||
|
r17075 | |||
|
r17252 | Check obsolete keys are exchanged only if source has an obsolete store | ||
$ hg init empty | ||||
$ hg --config extensions.debugkeys=debugkeys.py -R empty push tmpd | ||||
pushing to tmpd | ||||
|
r22019 | listkeys phases | ||
|
r22239 | listkeys bookmarks | ||
|
r17252 | no changes found | ||
listkeys phases | ||||
[1] | ||||
|
r17249 | clone support | ||
(markers are copied and extinct changesets are included to allow hardlinks) | ||||
$ hg clone tmpb clone-dest | ||||
updating to branch default | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg -R clone-dest log -G --hidden | ||||
|
r21978 | @ 6:6f9641995072 (draft) [tip ] add n3w_3_c | ||
|
r17249 | | | ||
|
r34852 | | x 5:5601fb93a350 (draft *obsolete*) [ ] add new_3_c [rewritten as 6:6f9641995072] | ||
|
r21978 | |/ | ||
|
r34852 | | x 4:ca819180edb9 (draft *obsolete*) [ ] add new_2_c [rewritten as 5:5601fb93a350] | ||
|
r21978 | |/ | ||
|
r34852 | | x 3:cdbce2fbb163 (draft *obsolete*) [ ] add new_c [rewritten as 4:ca819180edb9] | ||
|
r21978 | |/ | ||
| o 2:245bde4270cd (public) [ ] add original_c | ||||
|/ | ||||
o 1:7c3bad9141dc (public) [ ] add b | ||||
|
r17249 | | | ||
|
r21978 | o 0:1f0dee641bb7 (public) [ ] add a | ||
|
r17249 | |||
$ hg -R clone-dest debugobsolete | ||||
|
r23094 | 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||
|
r22220 | cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'} | ||
ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||||
1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||||
5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||||
|
r17249 | |||
|
r17075 | |||
Destination repo have existing data | ||||
--------------------------------------- | ||||
On pull | ||||
$ hg init tmpe | ||||
$ cd tmpe | ||||
|
r22348 | $ hg debugobsolete -d '1339 0' 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00 | ||
|
r17075 | $ hg pull ../tmpb | ||
pulling from ../tmpb | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
|
r17206 | added 4 changesets with 4 changes to 4 files (+1 heads) | ||
|
r25351 | 5 new obsolescence markers | ||
|
r34662 | new changesets 1f0dee641bb7:6f9641995072 | ||
|
r17075 | (run 'hg heads' to see heads, 'hg merge' to merge) | ||
$ hg debugobsolete | ||||
|
r22348 | 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||
|
r25118 | 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||
|
r23094 | 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||
|
r25118 | 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||
|
r22220 | ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||
|
r25118 | cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'} | ||
|
r17075 | |||
|
r17171 | |||
|
r17075 | On push | ||
$ hg push ../tmpc | ||||
pushing to ../tmpc | ||||
searching for changes | ||||
no changes found | ||||
|
r25351 | 1 new obsolescence markers | ||
|
r17075 | [1] | ||
$ hg -R ../tmpc debugobsolete | ||||
|
r25118 | 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||
|
r23094 | 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||
|
r25118 | 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||
|
r22220 | ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||
|
r25118 | cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'} | ||
|
r22348 | 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||
|
r17171 | |||
detect outgoing obsolete and unstable | ||||
--------------------------------------- | ||||
|
r17206 | |||
|
r20117 | $ hg log -G | ||
|
r21978 | o 3:6f9641995072 (draft) [tip ] add n3w_3_c | ||
|
r17171 | | | ||
|
r21978 | | o 2:245bde4270cd (public) [ ] add original_c | ||
|/ | ||||
o 1:7c3bad9141dc (public) [ ] add b | ||||
|
r17171 | | | ||
|
r21978 | o 0:1f0dee641bb7 (public) [ ] add a | ||
|
r17171 | |||
|
r17831 | $ hg up 'desc("n3w_3_c")' | ||
|
r17206 | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
|
r17171 | $ mkcommit original_d | ||
|
r17206 | $ mkcommit original_e | ||
|
r22272 | $ hg debugobsolete --record-parents `getid original_d` -d '0 0' | ||
|
r33542 | obsoleted 1 changesets | ||
|
r35727 | 1 new orphan changesets | ||
|
r22272 | $ hg debugobsolete | grep `getid original_d` | ||
94b33453f93bdb8d457ef9b770851a618bf413e1 0 {6f96419950729f3671185b847352890f074f7557} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} | ||||
|
r17206 | $ hg log -r 'obsolete()' | ||
|
r34852 | 4:94b33453f93b (draft *obsolete*) [ ] add original_d [pruned] | ||
|
r27385 | $ hg summary | ||
|
r33632 | parent: 5:cda648ca50f5 tip (orphan) | ||
|
r27385 | add original_e | ||
branch: default | ||||
commit: (clean) | ||||
update: 1 new changesets, 2 branch heads (merge) | ||||
phases: 3 draft | ||||
|
r33632 | orphan: 1 changesets | ||
|
r33769 | $ hg log -G -r '::orphan()' | ||
|
r33632 | @ 5:cda648ca50f5 (draft orphan) [tip ] add original_e | ||
|
r21978 | | | ||
|
r34852 | x 4:94b33453f93b (draft *obsolete*) [ ] add original_d [pruned] | ||
|
r17206 | | | ||
|
r21978 | o 3:6f9641995072 (draft) [ ] add n3w_3_c | ||
|
r17171 | | | ||
|
r21978 | o 1:7c3bad9141dc (public) [ ] add b | ||
|
r17171 | | | ||
|
r21978 | o 0:1f0dee641bb7 (public) [ ] add a | ||
|
r17171 | |||
|
r17206 | |||
refuse to push obsolete changeset | ||||
$ hg push ../tmpc/ -r 'desc("original_d")' | ||||
pushing to ../tmpc/ | ||||
searching for changes | ||||
|
r17833 | abort: push includes obsolete changeset: 94b33453f93b! | ||
|
r17206 | [255] | ||
refuse to push unstable changeset | ||||
|
r17172 | $ hg push ../tmpc/ | ||
pushing to ../tmpc/ | ||||
searching for changes | ||||
|
r33632 | abort: push includes orphan changeset: cda648ca50f5! | ||
|
r17172 | [255] | ||
|
r17173 | |||
Test that extinct changeset are properly detected | ||||
$ hg log -r 'extinct()' | ||||
|
r17206 | |||
Don't try to push extinct changeset | ||||
$ hg init ../tmpf | ||||
$ hg out ../tmpf | ||||
comparing with ../tmpf | ||||
searching for changes | ||||
|
r21978 | 0:1f0dee641bb7 (public) [ ] add a | ||
1:7c3bad9141dc (public) [ ] add b | ||||
2:245bde4270cd (public) [ ] add original_c | ||||
3:6f9641995072 (draft) [ ] add n3w_3_c | ||||
|
r34852 | 4:94b33453f93b (draft *obsolete*) [ ] add original_d [pruned] | ||
|
r33632 | 5:cda648ca50f5 (draft orphan) [tip ] add original_e | ||
|
r17206 | $ hg push ../tmpf -f # -f because be push unstable too | ||
pushing to ../tmpf | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 6 changesets with 6 changes to 6 files (+1 heads) | ||||
|
r25351 | 7 new obsolescence markers | ||
|
r35727 | 1 new orphan changesets | ||
|
r17206 | |||
no warning displayed | ||||
$ hg push ../tmpf | ||||
pushing to ../tmpf | ||||
searching for changes | ||||
no changes found | ||||
[1] | ||||
|
r17214 | |||
Do not warn about new head when the new head is a successors of a remote one | ||||
|
r20117 | $ hg log -G | ||
|
r33632 | @ 5:cda648ca50f5 (draft orphan) [tip ] add original_e | ||
|
r17214 | | | ||
|
r34852 | x 4:94b33453f93b (draft *obsolete*) [ ] add original_d [pruned] | ||
|
r21978 | | | ||
o 3:6f9641995072 (draft) [ ] add n3w_3_c | ||||
|
r17214 | | | ||
|
r21978 | | o 2:245bde4270cd (public) [ ] add original_c | ||
|/ | ||||
o 1:7c3bad9141dc (public) [ ] add b | ||||
|
r17214 | | | ||
|
r21978 | o 0:1f0dee641bb7 (public) [ ] add a | ||
|
r17214 | |||
|
r17831 | $ hg up -q 'desc(n3w_3_c)' | ||
|
r17214 | $ mkcommit obsolete_e | ||
created new head | ||||
|
r32741 | $ hg debugobsolete `getid 'original_e'` `getid 'obsolete_e'` \ | ||
> -u 'test <test@example.net>' | ||||
|
r33542 | obsoleted 1 changesets | ||
|
r18493 | $ hg outgoing ../tmpf # parasite hg outgoing testin | ||
comparing with ../tmpf | ||||
searching for changes | ||||
|
r21978 | 6:3de5eca88c00 (draft) [tip ] add obsolete_e | ||
|
r17214 | $ hg push ../tmpf | ||
pushing to ../tmpf | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files (+1 heads) | ||||
|
r25351 | 1 new obsolescence markers | ||
r33249 | obsoleted 1 changesets | |||
|
r17297 | |||
|
r22274 | test relevance computation | ||
--------------------------------------- | ||||
Checking simple case of "marker relevance". | ||||
Reminder of the repo situation | ||||
$ hg log --hidden --graph | ||||
@ 6:3de5eca88c00 (draft) [tip ] add obsolete_e | ||||
| | ||||
|
r34852 | | x 5:cda648ca50f5 (draft *obsolete*) [ ] add original_e [rewritten as 6:3de5eca88c00 by test <test@example.net>] | ||
|
r22274 | | | | ||
|
r34852 | | x 4:94b33453f93b (draft *obsolete*) [ ] add original_d [pruned] | ||
|
r22274 | |/ | ||
o 3:6f9641995072 (draft) [ ] add n3w_3_c | ||||
| | ||||
| o 2:245bde4270cd (public) [ ] add original_c | ||||
|/ | ||||
o 1:7c3bad9141dc (public) [ ] add b | ||||
| | ||||
o 0:1f0dee641bb7 (public) [ ] add a | ||||
List of all markers | ||||
$ hg debugobsolete | ||||
|
r22348 | 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||
|
r25118 | 1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||
|
r23094 | 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||
|
r25118 | 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||
|
r22274 | ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||
|
r25118 | cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'} | ||
|
r22274 | 94b33453f93bdb8d457ef9b770851a618bf413e1 0 {6f96419950729f3671185b847352890f074f7557} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} | ||
|
r32741 | cda648ca50f50482b7055c0b0c4c117bba6733d9 3de5eca88c00aa039da7399a220f4a5221faa585 0 (*) {'user': 'test <test@example.net>'} (glob) | ||
|
r22274 | |||
List of changesets with no chain | ||||
$ hg debugobsolete --hidden --rev ::2 | ||||
List of changesets that are included on marker chain | ||||
$ hg debugobsolete --hidden --rev 6 | ||||
|
r32741 | cda648ca50f50482b7055c0b0c4c117bba6733d9 3de5eca88c00aa039da7399a220f4a5221faa585 0 (*) {'user': 'test <test@example.net>'} (glob) | ||
|
r22274 | |||
List of changesets with a longer chain, (including a pruned children) | ||||
$ hg debugobsolete --hidden --rev 3 | ||||
1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||||
|
r22348 | 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||
|
r23094 | 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||
|
r22274 | 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||
94b33453f93bdb8d457ef9b770851a618bf413e1 0 {6f96419950729f3671185b847352890f074f7557} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} | ||||
ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||||
cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'} | ||||
List of both | ||||
$ hg debugobsolete --hidden --rev 3::6 | ||||
1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||||
|
r22348 | 1339133913391339133913391339133913391339 ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:19 1970 +0000) {'user': 'test'} | ||
|
r23094 | 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||
|
r22274 | 5601fb93a350734d935195fee37f4054c529ff39 6f96419950729f3671185b847352890f074f7557 1 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||
94b33453f93bdb8d457ef9b770851a618bf413e1 0 {6f96419950729f3671185b847352890f074f7557} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} | ||||
ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 (Thu Jan 01 00:22:18 1970 +0000) {'user': 'test'} | ||||
|
r32741 | cda648ca50f50482b7055c0b0c4c117bba6733d9 3de5eca88c00aa039da7399a220f4a5221faa585 0 (*) {'user': 'test <test@example.net>'} (glob) | ||
|
r22274 | cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 (Thu Jan 01 00:22:17 1970 +0000) {'user': 'test'} | ||
|
r29795 | List of all markers in JSON | ||
$ hg debugobsolete -Tjson | ||||
[ | ||||
{ | ||||
"date": [1339.0, 0], | ||||
"flag": 0, | ||||
"metadata": {"user": "test"}, | ||||
|
r33856 | "prednode": "1339133913391339133913391339133913391339", | ||
|
r29795 | "succnodes": ["ca819180edb99ed25ceafb3e9584ac287e240b00"] | ||
}, | ||||
{ | ||||
"date": [1339.0, 0], | ||||
"flag": 0, | ||||
"metadata": {"user": "test"}, | ||||
|
r33856 | "prednode": "1337133713371337133713371337133713371337", | ||
|
r29795 | "succnodes": ["5601fb93a350734d935195fee37f4054c529ff39"] | ||
}, | ||||
{ | ||||
"date": [121.0, 120], | ||||
"flag": 12, | ||||
"metadata": {"user": "test"}, | ||||
|
r33856 | "prednode": "245bde4270cd1072a27757984f9cda8ba26f08ca", | ||
|
r29795 | "succnodes": ["cdbce2fbb16313928851e97e0d85413f3f7eb77f"] | ||
}, | ||||
{ | ||||
"date": [1338.0, 0], | ||||
"flag": 1, | ||||
"metadata": {"user": "test"}, | ||||
|
r33856 | "prednode": "5601fb93a350734d935195fee37f4054c529ff39", | ||
|
r29795 | "succnodes": ["6f96419950729f3671185b847352890f074f7557"] | ||
}, | ||||
{ | ||||
"date": [1338.0, 0], | ||||
"flag": 0, | ||||
"metadata": {"user": "test"}, | ||||
|
r33856 | "prednode": "ca819180edb99ed25ceafb3e9584ac287e240b00", | ||
|
r29795 | "succnodes": ["1337133713371337133713371337133713371337"] | ||
}, | ||||
{ | ||||
"date": [1337.0, 0], | ||||
"flag": 0, | ||||
"metadata": {"user": "test"}, | ||||
|
r33856 | "prednode": "cdbce2fbb16313928851e97e0d85413f3f7eb77f", | ||
|
r29795 | "succnodes": ["ca819180edb99ed25ceafb3e9584ac287e240b00"] | ||
}, | ||||
{ | ||||
"date": [0.0, 0], | ||||
"flag": 0, | ||||
"metadata": {"user": "test"}, | ||||
"parentnodes": ["6f96419950729f3671185b847352890f074f7557"], | ||||
|
r33856 | "prednode": "94b33453f93bdb8d457ef9b770851a618bf413e1", | ||
|
r29795 | "succnodes": [] | ||
}, | ||||
{ | ||||
"date": *, (glob) | ||||
"flag": 0, | ||||
|
r32743 | "metadata": {"user": "test <test@example.net>"}, | ||
|
r33856 | "prednode": "cda648ca50f50482b7055c0b0c4c117bba6733d9", | ||
|
r29795 | "succnodes": ["3de5eca88c00aa039da7399a220f4a5221faa585"] | ||
} | ||||
] | ||||
Template keywords | ||||
$ hg debugobsolete -r6 -T '{succnodes % "{node|short}"} {date|shortdate}\n' | ||||
3de5eca88c00 ????-??-?? (glob) | ||||
$ hg debugobsolete -r6 -T '{join(metadata % "{key}={value}", " ")}\n' | ||||
|
r32741 | user=test <test@example.net> | ||
|
r34426 | $ hg debugobsolete -r6 -T '{metadata}\n{metadata}\n' | ||
'user': 'test <test@example.net>' | ||||
|
r32741 | 'user': 'test <test@example.net>' | ||
|
r34426 | $ hg debugobsolete -r6 -T '{succnodes}\n{succnodes}\n' | ||
3de5eca88c00aa039da7399a220f4a5221faa585 | ||||
3de5eca88c00aa039da7399a220f4a5221faa585 | ||||
|
r29795 | $ hg debugobsolete -r6 -T '{flag} {get(metadata, "user")}\n' | ||
|
r32741 | 0 test <test@example.net> | ||
|
r29795 | |||
|
r24733 | Test the debug output for exchange | ||
---------------------------------- | ||||
|
r29688 | $ hg pull ../tmpb --config 'experimental.obsmarkers-exchange-debug=True' # bundle2 | ||
|
r24733 | pulling from ../tmpb | ||
searching for changes | ||||
no changes found | ||||
obsmarker-exchange: 346 bytes received | ||||
|
r18401 | check hgweb does not explode | ||
==================================== | ||||
$ hg unbundle $TESTDIR/bundles/hgweb+obs.hg | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 62 changesets with 63 changes to 9 files (+60 heads) | ||||
|
r34662 | new changesets 50c51b361e60:c15e9edfca13 | ||
|
r18401 | (run 'hg heads .' to see heads, 'hg merge' to merge) | ||
$ for node in `hg log -r 'desc(babar_)' --template '{node}\n'`; | ||||
> do | ||||
> hg debugobsolete $node | ||||
> done | ||||
|
r33542 | obsoleted 1 changesets | ||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
obsoleted 1 changesets | ||||
|
r18401 | $ hg up tip | ||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r30733 | #if serve | ||
|
r18401 | $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log | ||
$ cat hg.pid >> $DAEMON_PIDS | ||||
|
r18426 | check changelog view | ||
|
r25472 | $ get-with-headers.py --headeronly localhost:$HGPORT 'shortlog/' | ||
|
r18426 | 200 Script output follows | ||
|
r18401 | |||
|
r18428 | check graph view | ||
|
r25472 | $ get-with-headers.py --headeronly localhost:$HGPORT 'graph' | ||
|
r18428 | 200 Script output follows | ||
|
r18401 | check filelog view | ||
|
r25472 | $ get-with-headers.py --headeronly localhost:$HGPORT 'log/'`hg log -r . -T "{node}"`/'babar' | ||
|
r18401 | 200 Script output follows | ||
|
r18522 | |||
|
r25472 | $ get-with-headers.py --headeronly localhost:$HGPORT 'rev/68' | ||
|
r18522 | 200 Script output follows | ||
|
r25472 | $ get-with-headers.py --headeronly localhost:$HGPORT 'rev/67' | ||
|
r18532 | 404 Not Found | ||
|
r18522 | [1] | ||
check that web.view config option: | ||||
|
r25472 | $ killdaemons.py hg.pid | ||
|
r18522 | $ cat >> .hg/hgrc << EOF | ||
> [web] | ||||
> view=all | ||||
> EOF | ||||
$ wait | ||||
$ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log | ||||
|
r25472 | $ get-with-headers.py --headeronly localhost:$HGPORT 'rev/67' | ||
|
r18522 | 200 Script output follows | ||
|
r25472 | $ killdaemons.py hg.pid | ||
|
r18401 | |||
|
r17306 | Checking _enable=False warning if obsolete marker exists | ||
|
r17297 | |||
|
r22955 | $ echo '[experimental]' >> $HGRCPATH | ||
|
r34867 | $ echo "evolution=" >> $HGRCPATH | ||
|
r17297 | $ hg log -r tip | ||
|
r21978 | 68:c15e9edfca13 (draft) [tip ] add celestine | ||
|
r18568 | |||
reenable for later test | ||||
|
r22955 | $ echo '[experimental]' >> $HGRCPATH | ||
|
r34869 | $ echo "evolution.exchange=True" >> $HGRCPATH | ||
|
r34867 | $ echo "evolution.createmarkers=True" >> $HGRCPATH | ||
|
r18568 | |||
|
r30733 | $ rm hg.pid access.log errors.log | ||
|
r18506 | #endif | ||
|
r18568 | |||
|
r30711 | Several troubles on the same changeset (create an unstable and bumped changeset) | ||
$ hg debugobsolete `getid obsolete_e` | ||||
|
r33542 | obsoleted 1 changesets | ||
|
r35727 | 2 new orphan changesets | ||
|
r30711 | $ hg debugobsolete `getid original_c` `getid babar` | ||
|
r35727 | 1 new phase-divergent changesets | ||
|
r33771 | $ hg log --config ui.logtemplate= -r 'phasedivergent() and orphan()' | ||
|
r30711 | changeset: 7:50c51b361e60 | ||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
|
r33652 | instability: orphan, phase-divergent | ||
|
r30711 | summary: add babar | ||
|
r31699 | test the "obsolete" templatekw | ||
$ hg log -r 'obsolete()' | ||||
|
r34852 | 6:3de5eca88c00 (draft *obsolete*) [ ] add obsolete_e [pruned] | ||
|
r31699 | |||
|
r30712 | test the "troubles" templatekw | ||
|
r33771 | $ hg log -r 'phasedivergent() and orphan()' | ||
|
r33652 | 7:50c51b361e60 (draft orphan phase-divergent) [ ] add babar | ||
|
r30712 | |||
|
r30713 | test the default cmdline template | ||
|
r33771 | $ hg log -T default -r 'phasedivergent()' | ||
|
r30713 | changeset: 7:50c51b361e60 | ||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
|
r33675 | instability: orphan, phase-divergent | ||
|
r30713 | summary: add babar | ||
|
r31702 | $ hg log -T default -r 'obsolete()' | ||
changeset: 6:3de5eca88c00 | ||||
parent: 3:6f9641995072 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
|
r34902 | obsolete: pruned | ||
|
r31702 | summary: add obsolete_e | ||
|
r30713 | |||
|
r33775 | test the obsolete labels | ||
$ hg log --config ui.logtemplate= --color=debug -r 'phasedivergent()' | ||||
|
r33777 | [log.changeset changeset.draft changeset.unstable instability.orphan instability.phase-divergent|changeset: 7:50c51b361e60] | ||
|
r33775 | [log.user|user: test] | ||
[log.date|date: Thu Jan 01 00:00:00 1970 +0000] | ||||
|
r33778 | [log.instability|instability: orphan, phase-divergent] | ||
|
r33775 | [log.summary|summary: add babar] | ||
$ hg log -T default -r 'phasedivergent()' --color=debug | ||||
|
r34718 | [log.changeset changeset.draft changeset.unstable instability.orphan instability.phase-divergent|changeset: 7:50c51b361e60] | ||
|
r33775 | [log.user|user: test] | ||
[log.date|date: Thu Jan 01 00:00:00 1970 +0000] | ||||
|
r33778 | [log.instability|instability: orphan, phase-divergent] | ||
|
r33775 | [log.summary|summary: add babar] | ||
$ hg log --config ui.logtemplate= --color=debug -r "obsolete()" | ||||
[log.changeset changeset.draft changeset.obsolete|changeset: 6:3de5eca88c00] | ||||
[log.parent changeset.draft|parent: 3:6f9641995072] | ||||
[log.user|user: test] | ||||
[log.date|date: Thu Jan 01 00:00:00 1970 +0000] | ||||
|
r34901 | [log.obsfate|obsolete: pruned] | ||
|
r33775 | [log.summary|summary: add obsolete_e] | ||
$ hg log -T default -r 'obsolete()' --color=debug | ||||
[log.changeset changeset.draft changeset.obsolete|changeset: 6:3de5eca88c00] | ||||
[log.parent changeset.draft|parent: 3:6f9641995072] | ||||
[log.user|user: test] | ||||
[log.date|date: Thu Jan 01 00:00:00 1970 +0000] | ||||
|
r34902 | [log.obsfate|obsolete: pruned] | ||
|
r33775 | [log.summary|summary: add obsolete_e] | ||
|
r30715 | test summary output | ||
|
r33771 | $ hg up -r 'phasedivergent() and orphan()' | ||
|
r30715 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||
$ hg summary | ||||
|
r33652 | parent: 7:50c51b361e60 (orphan, phase-divergent) | ||
|
r30715 | add babar | ||
branch: default | ||||
|
r30733 | commit: (clean) | ||
|
r30715 | update: 2 new changesets (update) | ||
phases: 4 draft | ||||
|
r33632 | orphan: 2 changesets | ||
|
r33652 | phase-divergent: 1 changesets | ||
|
r31703 | $ hg up -r 'obsolete()' | ||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg summary | ||||
parent: 6:3de5eca88c00 (obsolete) | ||||
add obsolete_e | ||||
branch: default | ||||
commit: (clean) | ||||
update: 3 new changesets (update) | ||||
phases: 4 draft | ||||
|
r33632 | orphan: 2 changesets | ||
|
r33652 | phase-divergent: 1 changesets | ||
|
r30715 | |||
r36972 | test debugwhyunstable output | |||
$ hg debugwhyunstable 50c51b361e60 | ||||
orphan: obsolete parent 3de5eca88c00aa039da7399a220f4a5221faa585 | ||||
phase-divergent: immutable predecessor 245bde4270cd1072a27757984f9cda8ba26f08ca | ||||
r35088 | #if serve | |||
$ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log | ||||
$ cat hg.pid >> $DAEMON_PIDS | ||||
check obsolete changeset | ||||
$ get-with-headers.py localhost:$HGPORT 'log?rev=first(obsolete())&style=paper' | grep '<span class="obsolete">' | ||||
<span class="phase">draft</span> <span class="obsolete">obsolete</span> | ||||
$ get-with-headers.py localhost:$HGPORT 'log?rev=first(obsolete())&style=coal' | grep '<span class="obsolete">' | ||||
<span class="phase">draft</span> <span class="obsolete">obsolete</span> | ||||
$ get-with-headers.py localhost:$HGPORT 'log?rev=first(obsolete())&style=gitweb' | grep '<span class="logtags">' | ||||
<span class="logtags"><span class="phasetag" title="draft">draft</span> <span class="obsoletetag" title="obsolete">obsolete</span> </span> | ||||
$ get-with-headers.py localhost:$HGPORT 'log?rev=first(obsolete())&style=monoblue' | grep '<span class="logtags">' | ||||
<span class="logtags"><span class="phasetag" title="draft">draft</span> <span class="obsoletetag" title="obsolete">obsolete</span> </span> | ||||
$ get-with-headers.py localhost:$HGPORT 'log?rev=first(obsolete())&style=spartan' | grep 'class="obsolete"' | ||||
r36340 | <th class="obsolete">obsolete:</th> | |||
<td class="obsolete">pruned by test <span class="age">Thu, 01 Jan 1970 00:00:00 +0000</span></td> | ||||
r35501 | ||||
r35093 | check changeset with instabilities | |||
$ get-with-headers.py localhost:$HGPORT 'log?rev=first(phasedivergent())&style=paper' | grep '<span class="instability">' | ||||
<span class="phase">draft</span> <span class="instability">orphan</span> <span class="instability">phase-divergent</span> | ||||
$ get-with-headers.py localhost:$HGPORT 'log?rev=first(phasedivergent())&style=coal' | grep '<span class="instability">' | ||||
<span class="phase">draft</span> <span class="instability">orphan</span> <span class="instability">phase-divergent</span> | ||||
$ get-with-headers.py localhost:$HGPORT 'log?rev=first(phasedivergent())&style=gitweb' | grep '<span class="logtags">' | ||||
<span class="logtags"><span class="phasetag" title="draft">draft</span> <span class="instabilitytag" title="orphan">orphan</span> <span class="instabilitytag" title="phase-divergent">phase-divergent</span> </span> | ||||
$ get-with-headers.py localhost:$HGPORT 'log?rev=first(phasedivergent())&style=monoblue' | grep '<span class="logtags">' | ||||
<span class="logtags"><span class="phasetag" title="draft">draft</span> <span class="instabilitytag" title="orphan">orphan</span> <span class="instabilitytag" title="phase-divergent">phase-divergent</span> </span> | ||||
$ get-with-headers.py localhost:$HGPORT 'log?rev=first(phasedivergent())&style=spartan' | grep 'class="instabilities"' | ||||
<th class="instabilities">instabilities:</th> | ||||
<td class="instabilities">orphan phase-divergent </td> | ||||
r36973 | check explanation for an orphan and phase-divergent changeset | |||
$ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=paper' | egrep '(orphan|phase-divergent):' | ||||
<td>orphan: obsolete parent <a href="/rev/3de5eca88c00?style=paper">3de5eca88c00</a><br> | ||||
phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=paper">245bde4270cd</a></td> | ||||
$ get-with-headers.py localhost:$HGPORT 'rev/50c51b361e60?style=coal' | egrep '(orphan|phase-divergent):' | ||||
<td>orphan: obsolete parent <a href="/rev/3de5eca88c00?style=coal">3de5eca88c00</a><br> | ||||
phase-divergent: immutable predecessor <a href="/rev/245bde4270cd?style=coal">245bde4270cd</a></td> | ||||
r35088 | $ killdaemons.py | |||
$ rm hg.pid access.log errors.log | ||||
r36973 | ||||
r35088 | #endif | |||
|
r18568 | Test incoming/outcoming with changesets obsoleted remotely, known locally | ||
=============================================================================== | ||||
This test issue 3805 | ||||
$ hg init repo-issue3805 | ||||
$ cd repo-issue3805 | ||||
|
r27318 | $ echo "base" > base | ||
$ hg ci -Am "base" | ||||
adding base | ||||
|
r18568 | $ echo "foo" > foo | ||
$ hg ci -Am "A" | ||||
adding foo | ||||
$ hg clone . ../other-issue3805 | ||||
updating to branch default | ||||
|
r27318 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
|
r18568 | $ echo "bar" >> foo | ||
$ hg ci --amend | ||||
$ cd ../other-issue3805 | ||||
$ hg log -G | ||||
|
r27318 | @ 1:29f0c6921ddd (draft) [tip ] A | ||
| | ||||
o 0:d20a80d4def3 (draft) [ ] base | ||||
|
r18568 | |||
$ hg log -G -R ../repo-issue3805 | ||||
|
r34087 | @ 2:323a9c3ddd91 (draft) [tip ] A | ||
|
r27318 | | | ||
o 0:d20a80d4def3 (draft) [ ] base | ||||
|
r18568 | |||
$ hg incoming | ||||
|
r35394 | comparing with $TESTTMP/tmpe/repo-issue3805 | ||
|
r18568 | searching for changes | ||
|
r34087 | 2:323a9c3ddd91 (draft) [tip ] A | ||
|
r18568 | $ hg incoming --bundle ../issue3805.hg | ||
|
r35394 | comparing with $TESTTMP/tmpe/repo-issue3805 | ||
|
r18568 | searching for changes | ||
|
r34087 | 2:323a9c3ddd91 (draft) [tip ] A | ||
|
r18568 | $ hg outgoing | ||
|
r35394 | comparing with $TESTTMP/tmpe/repo-issue3805 | ||
|
r18568 | searching for changes | ||
|
r27319 | 1:29f0c6921ddd (draft) [tip ] A | ||
|
r18568 | |||
#if serve | ||||
$ hg serve -R ../repo-issue3805 -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log | ||||
$ cat hg.pid >> $DAEMON_PIDS | ||||
$ hg incoming http://localhost:$HGPORT | ||||
comparing with http://localhost:$HGPORT/ | ||||
searching for changes | ||||
|
r27318 | 2:323a9c3ddd91 (draft) [tip ] A | ||
|
r18568 | $ hg outgoing http://localhost:$HGPORT | ||
comparing with http://localhost:$HGPORT/ | ||||
searching for changes | ||||
|
r27319 | 1:29f0c6921ddd (draft) [tip ] A | ||
|
r18568 | |||
|
r25474 | $ killdaemons.py | ||
|
r18568 | |||
#endif | ||||
|
r18617 | |||
This test issue 3814 | ||||
(nothing to push but locally hidden changeset) | ||||
$ cd .. | ||||
$ hg init repo-issue3814 | ||||
$ cd repo-issue3805 | ||||
|
r27318 | $ hg push -r 323a9c3ddd91 ../repo-issue3814 | ||
|
r18617 | pushing to ../repo-issue3814 | ||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
|
r27318 | added 2 changesets with 2 changes to 2 files | ||
|
r34087 | 1 new obsolescence markers | ||
|
r18617 | $ hg out ../repo-issue3814 | ||
comparing with ../repo-issue3814 | ||||
searching for changes | ||||
no changes found | ||||
[1] | ||||
|
r20807 | Test that a local tag blocks a changeset from being hidden | ||
|
r18617 | |||
|
r27318 | $ hg tag -l visible -r 1 --hidden | ||
|
r20807 | $ hg log -G | ||
|
r34087 | @ 2:323a9c3ddd91 (draft) [tip ] A | ||
|
r27318 | | | ||
|
r34852 | | x 1:29f0c6921ddd (draft *obsolete*) [visible ] A [rewritten using amend as 2:323a9c3ddd91] | ||
|
r27318 | |/ | ||
o 0:d20a80d4def3 (draft) [ ] base | ||||
|
r20807 | |||
|
r21823 | Test that removing a local tag does not cause some commands to fail | ||
$ hg tag -l -r tip tiptag | ||||
$ hg tags | ||||
|
r34087 | tiptag 2:323a9c3ddd91 | ||
tip 2:323a9c3ddd91 | ||||
|
r27318 | visible 1:29f0c6921ddd | ||
|
r21823 | $ hg --config extensions.strip= strip -r tip --no-backup | ||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg tags | ||||
|
r27318 | visible 1:29f0c6921ddd | ||
tip 1:29f0c6921ddd | ||||
|
r24113 | |||
|
r24882 | Test bundle overlay onto hidden revision | ||
$ cd .. | ||||
$ hg init repo-bundleoverlay | ||||
$ cd repo-bundleoverlay | ||||
$ echo "A" > foo | ||||
$ hg ci -Am "A" | ||||
adding foo | ||||
$ echo "B" >> foo | ||||
$ hg ci -m "B" | ||||
$ hg up 0 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo "C" >> foo | ||||
$ hg ci -m "C" | ||||
created new head | ||||
$ hg log -G | ||||
@ 2:c186d7714947 (draft) [tip ] C | ||||
| | ||||
| o 1:44526ebb0f98 (draft) [ ] B | ||||
|/ | ||||
o 0:4b34ecfb0d56 (draft) [ ] A | ||||
$ hg clone -r1 . ../other-bundleoverlay | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 2 changes to 1 files | ||||
|
r34662 | new changesets 4b34ecfb0d56:44526ebb0f98 | ||
|
r24882 | updating to branch default | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd ../other-bundleoverlay | ||||
$ echo "B+" >> foo | ||||
$ hg ci --amend -m "B+" | ||||
$ hg log -G --hidden | ||||
|
r34087 | @ 2:b7d587542d40 (draft) [tip ] B+ | ||
|
r24882 | | | ||
|
r34852 | | x 1:44526ebb0f98 (draft *obsolete*) [ ] B [rewritten using amend as 2:b7d587542d40] | ||
|
r24882 | |/ | ||
o 0:4b34ecfb0d56 (draft) [ ] A | ||||
$ hg incoming ../repo-bundleoverlay --bundle ../bundleoverlay.hg | ||||
comparing with ../repo-bundleoverlay | ||||
searching for changes | ||||
1:44526ebb0f98 (draft) [ ] B | ||||
2:c186d7714947 (draft) [tip ] C | ||||
$ hg log -G -R ../bundleoverlay.hg | ||||
|
r34087 | o 3:c186d7714947 (draft) [tip ] C | ||
|
r24882 | | | ||
|
r34087 | | @ 2:b7d587542d40 (draft) [ ] B+ | ||
|
r24882 | |/ | ||
o 0:4b34ecfb0d56 (draft) [ ] A | ||||
|
r24136 | #if serve | ||
Test issue 4506 | ||||
$ cd .. | ||||
$ hg init repo-issue4506 | ||||
$ cd repo-issue4506 | ||||
$ echo "0" > foo | ||||
$ hg add foo | ||||
$ hg ci -m "content-0" | ||||
$ hg up null | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ echo "1" > bar | ||||
$ hg add bar | ||||
$ hg ci -m "content-1" | ||||
created new head | ||||
$ hg up 0 | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg graft 1 | ||||
grafting 1:1c9eddb02162 "content-1" (tip) | ||||
$ hg debugobsolete `hg log -r1 -T'{node}'` `hg log -r2 -T'{node}'` | ||||
|
r33542 | obsoleted 1 changesets | ||
|
r24136 | |||
$ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log | ||||
$ cat hg.pid >> $DAEMON_PIDS | ||||
|
r25472 | $ get-with-headers.py --headeronly localhost:$HGPORT 'rev/1' | ||
|
r24136 | 404 Not Found | ||
[1] | ||||
|
r25472 | $ get-with-headers.py --headeronly localhost:$HGPORT 'file/tip/bar' | ||
|
r24136 | 200 Script output follows | ||
|
r25472 | $ get-with-headers.py --headeronly localhost:$HGPORT 'annotate/tip/bar' | ||
|
r24136 | 200 Script output follows | ||
|
r25474 | $ killdaemons.py | ||
|
r24136 | |||
#endif | ||||
|
r25297 | Test heads computation on pending index changes with obsolescence markers | ||
$ cd .. | ||||
$ cat >$TESTTMP/test_extension.py << EOF | ||||
|
r33972 | > from __future__ import absolute_import | ||
> from mercurial.i18n import _ | ||||
|
r32337 | > from mercurial import cmdutil, registrar | ||
|
r25297 | > | ||
> cmdtable = {} | ||||
|
r32337 | > command = registrar.command(cmdtable) | ||
|
r36512 | > @command(b"amendtransient",[], _(b'hg amendtransient [rev]')) | ||
|
r25297 | > def amend(ui, repo, *pats, **opts): | ||
> opts['message'] = 'Test' | ||||
> opts['logfile'] = None | ||||
|
r34088 | > cmdutil.amend(ui, repo, repo['.'], {}, pats, opts) | ||
|
r36512 | > ui.write(b'%s\n' % repo.changelog.headrevs()) | ||
|
r25297 | > EOF | ||
$ cat >> $HGRCPATH << EOF | ||||
> [extensions] | ||||
> testextension=$TESTTMP/test_extension.py | ||||
> EOF | ||||
$ hg init repo-issue-nativerevs-pending-changes | ||||
$ cd repo-issue-nativerevs-pending-changes | ||||
$ mkcommit a | ||||
$ mkcommit b | ||||
$ hg up ".^" | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ echo aa > a | ||||
$ hg amendtransient | ||||
|
r35727 | 1 new orphan changesets | ||
|
r34087 | [1, 2] | ||
|
r25569 | |||
Test cache consistency for the visible filter | ||||
1) We want to make sure that the cached filtered revs are invalidated when | ||||
bookmarks change | ||||
$ cd .. | ||||
$ cat >$TESTTMP/test_extension.py << EOF | ||||
|
r33993 | > from __future__ import absolute_import, print_function | ||
|
r29065 | > import weakref | ||
|
r33993 | > from mercurial import ( | ||
> bookmarks, | ||||
> cmdutil, | ||||
> extensions, | ||||
> repoview, | ||||
> ) | ||||
|
r25569 | > def _bookmarkchanged(orig, bkmstoreinst, *args, **kwargs): | ||
|
r29065 | > reporef = weakref.ref(bkmstoreinst._repo) | ||
> def trhook(tr): | ||||
> repo = reporef() | ||||
> hidden1 = repoview.computehidden(repo) | ||||
|
r36512 | > hidden = repoview.filterrevs(repo, b'visible') | ||
|
r29065 | > if sorted(hidden1) != sorted(hidden): | ||
|
r33993 | > print("cache inconsistency") | ||
|
r29065 | > bkmstoreinst._repo.currenttransaction().addpostclose('test_extension', trhook) | ||
> orig(bkmstoreinst, *args, **kwargs) | ||||
|
r25569 | > def extsetup(ui): | ||
|
r33515 | > extensions.wrapfunction(bookmarks.bmstore, '_recordchange', | ||
|
r29065 | > _bookmarkchanged) | ||
|
r25569 | > EOF | ||
$ hg init repo-cache-inconsistency | ||||
$ cd repo-issue-nativerevs-pending-changes | ||||
$ mkcommit a | ||||
a already tracked! | ||||
$ mkcommit b | ||||
$ hg id | ||||
13bedc178fce tip | ||||
$ echo "hello" > b | ||||
$ hg commit --amend -m "message" | ||||
$ hg book bookb -r 13bedc178fce --hidden | ||||
|
r35629 | bookmarking hidden changeset 13bedc178fce | ||
|
r35730 | (hidden revision '13bedc178fce' was rewritten as: a9b1f8652753) | ||
|
r25569 | $ hg log -r 13bedc178fce | ||
|
r34852 | 4:13bedc178fce (draft *obsolete*) [ bookb] add b [rewritten using amend as 5:a9b1f8652753] | ||
|
r25569 | $ hg book -d bookb | ||
$ hg log -r 13bedc178fce | ||||
|
r35589 | abort: hidden revision '13bedc178fce' was rewritten as: a9b1f8652753! | ||
|
r25569 | (use --hidden to access hidden revisions) | ||
[255] | ||||
|
r29065 | Empty out the test extension, as it isn't compatible with later parts | ||
of the test. | ||||
$ echo > $TESTTMP/test_extension.py | ||||
|
r28220 | Test ability to pull changeset with locally applying obsolescence markers | ||
(issue4945) | ||||
|
r25569 | |||
|
r28220 | $ cd .. | ||
$ hg init issue4845 | ||||
$ cd issue4845 | ||||
|
r25569 | |||
|
r28220 | $ echo foo > f0 | ||
$ hg add f0 | ||||
$ hg ci -m '0' | ||||
$ echo foo > f1 | ||||
$ hg add f1 | ||||
$ hg ci -m '1' | ||||
$ echo foo > f2 | ||||
$ hg add f2 | ||||
$ hg ci -m '2' | ||||
$ echo bar > f2 | ||||
|
r34867 | $ hg commit --amend --config experimental.evolution.createmarkers=True | ||
|
r28220 | $ hg log -G | ||
|
r34087 | @ 3:b0551702f918 (draft) [tip ] 2 | ||
|
r28220 | | | ||
o 1:e016b03fd86f (draft) [ ] 1 | ||||
| | ||||
o 0:a78f55e5508c (draft) [ ] 0 | ||||
$ hg log -G --hidden | ||||
|
r34087 | @ 3:b0551702f918 (draft) [tip ] 2 | ||
|
r28220 | | | ||
|
r34852 | | x 2:e008cf283490 (draft *obsolete*) [ ] 2 [rewritten using amend as 3:b0551702f918] | ||
|
r28220 | |/ | ||
o 1:e016b03fd86f (draft) [ ] 1 | ||||
| | ||||
o 0:a78f55e5508c (draft) [ ] 0 | ||||
r32629 | $ hg strip --hidden -r 2 --config extensions.strip= --config devel.strip-obsmarkers=no | |||
|
r35394 | saved backup bundle to $TESTTMP/tmpe/issue4845/.hg/strip-backup/e008cf283490-ede36964-backup.hg | ||
r32629 | $ hg debugobsolete | |||
|
r34962 | e008cf2834908e5d6b0f792a9d4b0e2272260fb8 b0551702f918510f01ae838ab03a463054c67b46 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'} | ||
r32629 | $ hg log -G | |||
@ 2:b0551702f918 (draft) [tip ] 2 | ||||
| | ||||
o 1:e016b03fd86f (draft) [ ] 1 | ||||
| | ||||
o 0:a78f55e5508c (draft) [ ] 0 | ||||
$ hg log -G --hidden | ||||
@ 2:b0551702f918 (draft) [tip ] 2 | ||||
| | ||||
o 1:e016b03fd86f (draft) [ ] 1 | ||||
| | ||||
o 0:a78f55e5508c (draft) [ ] 0 | ||||
$ hg debugbundle .hg/strip-backup/e008cf283490-*-backup.hg | ||||
|
r34027 | Stream params: {Compression: BZ} | ||
|
r34087 | changegroup -- {nbchanges: 1, version: 02} | ||
r32629 | e008cf2834908e5d6b0f792a9d4b0e2272260fb8 | |||
|
r36983 | cache:rev-branch-cache -- {} | ||
|
r34027 | phase-heads -- {} | ||
|
r34087 | e008cf2834908e5d6b0f792a9d4b0e2272260fb8 draft | ||
r32629 | ||||
$ hg pull .hg/strip-backup/e008cf283490-*-backup.hg | ||||
|
r34087 | pulling from .hg/strip-backup/e008cf283490-ede36964-backup.hg | ||
r32629 | searching for changes | |||
no changes found | ||||
$ hg debugobsolete | ||||
|
r34962 | e008cf2834908e5d6b0f792a9d4b0e2272260fb8 b0551702f918510f01ae838ab03a463054c67b46 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'} | ||
r32629 | $ hg log -G | |||
@ 2:b0551702f918 (draft) [tip ] 2 | ||||
| | ||||
o 1:e016b03fd86f (draft) [ ] 1 | ||||
| | ||||
o 0:a78f55e5508c (draft) [ ] 0 | ||||
$ hg log -G --hidden | ||||
@ 2:b0551702f918 (draft) [tip ] 2 | ||||
| | ||||
o 1:e016b03fd86f (draft) [ ] 1 | ||||
| | ||||
o 0:a78f55e5508c (draft) [ ] 0 | ||||
Testing that strip remove markers: | ||||
|
r28220 | $ hg strip -r 1 --config extensions.strip= | ||
0 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
|
r35394 | saved backup bundle to $TESTTMP/tmpe/issue4845/.hg/strip-backup/e016b03fd86f-65ede734-backup.hg | ||
r32629 | $ hg debugobsolete | |||
|
r28220 | $ hg log -G | ||
@ 0:a78f55e5508c (draft) [tip ] 0 | ||||
$ hg log -G --hidden | ||||
@ 0:a78f55e5508c (draft) [tip ] 0 | ||||
r32629 | $ hg debugbundle .hg/strip-backup/e016b03fd86f-*-backup.hg | |||
|
r34027 | Stream params: {Compression: BZ} | ||
changegroup -- {nbchanges: 2, version: 02} | ||||
r32623 | e016b03fd86fcccc54817d120b90b751aaf367d6 | |||
b0551702f918510f01ae838ab03a463054c67b46 | ||||
|
r36983 | cache:rev-branch-cache -- {} | ||
|
r34027 | obsmarkers -- {} | ||
|
r34962 | version: 1 (92 bytes) | ||
e008cf2834908e5d6b0f792a9d4b0e2272260fb8 b0551702f918510f01ae838ab03a463054c67b46 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'} | ||||
|
r34027 | phase-heads -- {} | ||
|
r33032 | b0551702f918510f01ae838ab03a463054c67b46 draft | ||
|
r28220 | |||
r32629 | $ hg unbundle .hg/strip-backup/e016b03fd86f-*-backup.hg | |||
|
r28220 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 2 changes to 2 files | ||||
|
r34087 | 1 new obsolescence markers | ||
|
r34662 | new changesets e016b03fd86f:b0551702f918 | ||
|
r28220 | (run 'hg update' to get a working copy) | ||
r32629 | $ hg debugobsolete | sort | |||
|
r34962 | e008cf2834908e5d6b0f792a9d4b0e2272260fb8 b0551702f918510f01ae838ab03a463054c67b46 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'} | ||
|
r28220 | $ hg log -G | ||
o 2:b0551702f918 (draft) [tip ] 2 | ||||
| | ||||
o 1:e016b03fd86f (draft) [ ] 1 | ||||
| | ||||
@ 0:a78f55e5508c (draft) [ ] 0 | ||||
$ hg log -G --hidden | ||||
o 2:b0551702f918 (draft) [tip ] 2 | ||||
| | ||||
o 1:e016b03fd86f (draft) [ ] 1 | ||||
| | ||||
@ 0:a78f55e5508c (draft) [ ] 0 | ||||
|
r28845 | Test that 'hg debugobsolete --index --rev' can show indices of obsmarkers when | ||
only a subset of those are displayed (because of --rev option) | ||||
$ hg init doindexrev | ||||
$ cd doindexrev | ||||
$ echo a > a | ||||
$ hg ci -Am a | ||||
adding a | ||||
$ hg ci --amend -m aa | ||||
$ echo b > b | ||||
$ hg ci -Am b | ||||
adding b | ||||
$ hg ci --amend -m bb | ||||
$ echo c > c | ||||
$ hg ci -Am c | ||||
adding c | ||||
$ hg ci --amend -m cc | ||||
$ echo d > d | ||||
$ hg ci -Am d | ||||
adding d | ||||
|
r34871 | $ hg ci --amend -m dd --config experimental.evolution.track-operation=1 | ||
|
r28845 | $ hg debugobsolete --index --rev "3+7" | ||
|
r34962 | 1 6fdef60fcbabbd3d50e9b9cbc2a240724b91a5e1 d27fb9b066076fd921277a4b9e8b9cb48c95bc6a 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'} | ||
3 4715cf767440ed891755448016c2b8cf70760c30 7ae79c5d60f049c7b0dd02f5f25b9d60aaf7b36d 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'} | ||||
|
r29795 | $ hg debugobsolete --index --rev "3+7" -Tjson | ||
[ | ||||
{ | ||||
|
r32411 | "date": [0.0, 0], | ||
|
r29795 | "flag": 0, | ||
"index": 1, | ||||
|
r34962 | "metadata": {"ef1": "1", "operation": "amend", "user": "test"}, | ||
|
r33856 | "prednode": "6fdef60fcbabbd3d50e9b9cbc2a240724b91a5e1", | ||
|
r29795 | "succnodes": ["d27fb9b066076fd921277a4b9e8b9cb48c95bc6a"] | ||
}, | ||||
{ | ||||
|
r32411 | "date": [0.0, 0], | ||
|
r29795 | "flag": 0, | ||
"index": 3, | ||||
|
r34962 | "metadata": {"ef1": "1", "operation": "amend", "user": "test"}, | ||
|
r33856 | "prednode": "4715cf767440ed891755448016c2b8cf70760c30", | ||
|
r29795 | "succnodes": ["7ae79c5d60f049c7b0dd02f5f25b9d60aaf7b36d"] | ||
} | ||||
] | ||||
|
r28220 | |||
|
r28795 | Test the --delete option of debugobsolete command | ||
|
r28867 | $ hg debugobsolete --index | ||
|
r34962 | 0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b f9bd49731b0b175e42992a3c8fa6c678b2bc11f1 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'} | ||
1 6fdef60fcbabbd3d50e9b9cbc2a240724b91a5e1 d27fb9b066076fd921277a4b9e8b9cb48c95bc6a 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'} | ||||
2 1ab51af8f9b41ef8c7f6f3312d4706d870b1fb74 29346082e4a9e27042b62d2da0e2de211c027621 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'} | ||||
3 4715cf767440ed891755448016c2b8cf70760c30 7ae79c5d60f049c7b0dd02f5f25b9d60aaf7b36d 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'} | ||||
|
r28867 | $ hg debugobsolete --delete 1 --delete 3 | ||
|
r30332 | deleted 2 obsolescence markers | ||
|
r28795 | $ hg debugobsolete | ||
|
r34962 | cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b f9bd49731b0b175e42992a3c8fa6c678b2bc11f1 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'} | ||
1ab51af8f9b41ef8c7f6f3312d4706d870b1fb74 29346082e4a9e27042b62d2da0e2de211c027621 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'} | ||||
r32388 | ||||
Test adding changeset after obsmarkers affecting it | ||||
(eg: during pull, or unbundle) | ||||
$ mkcommit e | ||||
$ hg bundle -r . --base .~1 ../bundle-2.hg | ||||
1 changesets found | ||||
$ getid . | ||||
$ hg --config extensions.strip= strip -r . | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
|
r35394 | saved backup bundle to $TESTTMP/tmpe/issue4845/doindexrev/.hg/strip-backup/9bc153528424-ee80edd4-backup.hg | ||
r32388 | $ hg debugobsolete 9bc153528424ea266d13e57f9ff0d799dfe61e4b | |||
$ hg unbundle ../bundle-2.hg | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
(run 'hg update' to get a working copy) | ||||
$ hg log -G | ||||
@ 7:7ae79c5d60f0 (draft) [tip ] dd | ||||
| | ||||
| o 6:4715cf767440 (draft) [ ] d | ||||
|/ | ||||
o 5:29346082e4a9 (draft) [ ] cc | ||||
| | ||||
o 3:d27fb9b06607 (draft) [ ] bb | ||||
| | ||||
| o 2:6fdef60fcbab (draft) [ ] b | ||||
|/ | ||||
o 1:f9bd49731b0b (draft) [ ] aa | ||||
|
r28795 | $ cd .. | ||