test-phases.t
1001 lines
| 27.0 KiB
| text/troff
|
Tads3Lexer
/ tests / test-phases.t
Matt Harbison
|
r34939 | $ cat > $TESTTMP/hook.sh << 'EOF' | ||
> echo "test-hook-close-phase: $HG_NODE: $HG_OLDPHASE -> $HG_PHASE" | ||||
> EOF | ||||
Boris Feld
|
r33459 | |||
$ cat >> $HGRCPATH << EOF | ||||
> [extensions] | ||||
> phasereport=$TESTDIR/testlib/ext-phase-report.py | ||||
Boris Feld
|
r34711 | > [hooks] | ||
Matt Harbison
|
r34939 | > txnclose-phase.test = sh $TESTTMP/hook.sh | ||
Boris Feld
|
r33459 | > EOF | ||
Mads Kiilerich
|
r16013 | $ hglog() { hg log --template "{rev} {phaseidx} {desc}\n" $*; } | ||
Pierre-Yves David
|
r15694 | $ mkcommit() { | ||
> echo "$1" > "$1" | ||||
> hg add "$1" | ||||
Pierre-Yves David
|
r15712 | > message="$1" | ||
> shift | ||||
> hg ci -m "$message" $* | ||||
Pierre-Yves David
|
r15694 | > } | ||
Pierre-Yves David
|
r15423 | |||
$ hg init initialrepo | ||||
$ cd initialrepo | ||||
Patrick Mezard
|
r16622 | |||
Cannot change null revision phase | ||||
$ hg phase --force --secret null | ||||
Patrick Mezard
|
r16659 | abort: cannot change null revision phase | ||
Patrick Mezard
|
r16622 | [255] | ||
$ hg phase null | ||||
-1: public | ||||
Pierre-Yves David
|
r15694 | $ mkcommit A | ||
Boris Feld
|
r33459 | test-debug-phase: new rev 0: x -> 1 | ||
Kevin Bullock
|
r34877 | test-hook-close-phase: 4a2df7238c3b48766b5e22fafbb8a2f506ec8256: -> draft | ||
Pierre-Yves David
|
r15694 | |||
New commit are draft by default | ||||
$ hglog | ||||
0 1 A | ||||
Following commit are draft too | ||||
$ mkcommit B | ||||
Boris Feld
|
r33459 | test-debug-phase: new rev 1: x -> 1 | ||
Kevin Bullock
|
r34877 | test-hook-close-phase: 27547f69f25460a52fff66ad004e58da7ad3fb56: -> draft | ||
Pierre-Yves David
|
r15423 | |||
$ hglog | ||||
Pierre-Yves David
|
r15694 | 1 1 B | ||
0 1 A | ||||
Rodrigo Damazio Bovendorp
|
r44456 | Working directory phase is secret when its parent is secret. | ||
$ hg phase --force --secret . | ||||
test-debug-phase: move rev 0: 1 -> 2 | ||||
test-debug-phase: move rev 1: 1 -> 2 | ||||
test-hook-close-phase: 4a2df7238c3b48766b5e22fafbb8a2f506ec8256: draft -> secret | ||||
test-hook-close-phase: 27547f69f25460a52fff66ad004e58da7ad3fb56: draft -> secret | ||||
$ hg log -r 'wdir()' -T '{phase}\n' | ||||
secret | ||||
$ hg log -r 'wdir() and public()' -T '{phase}\n' | ||||
$ hg log -r 'wdir() and draft()' -T '{phase}\n' | ||||
$ hg log -r 'wdir() and secret()' -T '{phase}\n' | ||||
secret | ||||
Working directory phase is draft when its parent is draft. | ||||
$ hg phase --draft . | ||||
test-debug-phase: move rev 1: 2 -> 1 | ||||
test-hook-close-phase: 27547f69f25460a52fff66ad004e58da7ad3fb56: secret -> draft | ||||
$ hg log -r 'wdir()' -T '{phase}\n' | ||||
draft | ||||
$ hg log -r 'wdir() and public()' -T '{phase}\n' | ||||
$ hg log -r 'wdir() and draft()' -T '{phase}\n' | ||||
draft | ||||
$ hg log -r 'wdir() and secret()' -T '{phase}\n' | ||||
Working directory phase is secret when a new commit will be created as secret, | ||||
even if the parent is draft. | ||||
$ hg log -r 'wdir() and secret()' -T '{phase}\n' \ | ||||
> --config phases.new-commit='secret' | ||||
secret | ||||
Working directory phase is draft when its parent is public. | ||||
Pierre-Yves David
|
r15694 | |||
Pierre-Yves David
|
r15830 | $ hg phase --public . | ||
Boris Feld
|
r33459 | test-debug-phase: move rev 0: 1 -> 0 | ||
test-debug-phase: move rev 1: 1 -> 0 | ||||
Kevin Bullock
|
r34877 | test-hook-close-phase: 4a2df7238c3b48766b5e22fafbb8a2f506ec8256: draft -> public | ||
test-hook-close-phase: 27547f69f25460a52fff66ad004e58da7ad3fb56: draft -> public | ||||
Rodrigo Damazio Bovendorp
|
r44456 | $ hg log -r 'wdir()' -T '{phase}\n' | ||
draft | ||||
$ hg log -r 'wdir() and public()' -T '{phase}\n' | ||||
$ hg log -r 'wdir() and draft()' -T '{phase}\n' | ||||
draft | ||||
$ hg log -r 'wdir() and secret()' -T '{phase}\n' | ||||
$ hg log -r 'wdir() and secret()' -T '{phase}\n' \ | ||||
> --config phases.new-commit='secret' | ||||
secret | ||||
Draft commit are properly created over public one: | ||||
Gilles Moris
|
r25120 | $ hg phase | ||
1: public | ||||
Pierre-Yves David
|
r15694 | $ hglog | ||
1 0 B | ||||
0 0 A | ||||
$ mkcommit C | ||||
Boris Feld
|
r33459 | test-debug-phase: new rev 2: x -> 1 | ||
Kevin Bullock
|
r34877 | test-hook-close-phase: f838bfaca5c7226600ebcfd84f3c3c13a28d3757: -> draft | ||
Pierre-Yves David
|
r15694 | $ mkcommit D | ||
Boris Feld
|
r33459 | test-debug-phase: new rev 3: x -> 1 | ||
Kevin Bullock
|
r34877 | test-hook-close-phase: b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e: -> draft | ||
Pierre-Yves David
|
r15694 | |||
$ hglog | ||||
3 1 D | ||||
2 1 C | ||||
1 0 B | ||||
0 0 A | ||||
Pierre-Yves David
|
r15712 | |||
Test creating changeset as secret | ||||
Pierre-Yves David
|
r16030 | $ mkcommit E --config phases.new-commit='secret' | ||
Boris Feld
|
r33459 | test-debug-phase: new rev 4: x -> 2 | ||
Kevin Bullock
|
r34877 | test-hook-close-phase: a603bfb5a83e312131cebcd05353c217d4d21dde: -> secret | ||
Pierre-Yves David
|
r15712 | $ hglog | ||
4 2 E | ||||
3 1 D | ||||
2 1 C | ||||
1 0 B | ||||
0 0 A | ||||
Test the secret property is inherited | ||||
$ mkcommit H | ||||
Boris Feld
|
r33459 | test-debug-phase: new rev 5: x -> 2 | ||
Kevin Bullock
|
r34877 | test-hook-close-phase: a030c6be5127abc010fcbff1851536552e6951a8: -> secret | ||
Pierre-Yves David
|
r15712 | $ hglog | ||
5 2 H | ||||
4 2 E | ||||
3 1 D | ||||
2 1 C | ||||
1 0 B | ||||
0 0 A | ||||
Even on merge | ||||
$ hg up -q 1 | ||||
$ mkcommit "B'" | ||||
Boris Feld
|
r33459 | test-debug-phase: new rev 6: x -> 1 | ||
Pierre-Yves David
|
r15712 | created new head | ||
Kevin Bullock
|
r34877 | test-hook-close-phase: cf9fe039dfd67e829edf6522a45de057b5c86519: -> draft | ||
Pierre-Yves David
|
r15712 | $ hglog | ||
6 1 B' | ||||
5 2 H | ||||
4 2 E | ||||
3 1 D | ||||
2 1 C | ||||
1 0 B | ||||
0 0 A | ||||
$ hg merge 4 # E | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
Gilles Moris
|
r25120 | $ hg phase | ||
6: draft | ||||
4: secret | ||||
Pierre-Yves David
|
r15712 | $ hg ci -m "merge B' and E" | ||
Boris Feld
|
r33459 | test-debug-phase: new rev 7: x -> 2 | ||
Kevin Bullock
|
r34877 | test-hook-close-phase: 17a481b3bccb796c0521ae97903d81c52bfee4af: -> secret | ||
Boris Feld
|
r33459 | |||
Pierre-Yves David
|
r15712 | $ hglog | ||
7 2 merge B' and E | ||||
6 1 B' | ||||
5 2 H | ||||
4 2 E | ||||
3 1 D | ||||
2 1 C | ||||
1 0 B | ||||
0 0 A | ||||
Pierre-Yves David
|
r15713 | Test secret changeset are not pushed | ||
$ hg init ../push-dest | ||||
Pierre-Yves David
|
r15820 | $ cat > ../push-dest/.hg/hgrc << EOF | ||
> [phases] | ||||
> publish=False | ||||
> EOF | ||||
Pierre-Yves David
|
r15838 | $ hg outgoing ../push-dest --template='{rev} {phase} {desc|firstline}\n' | ||
comparing with ../push-dest | ||||
searching for changes | ||||
0 public A | ||||
1 public B | ||||
2 draft C | ||||
3 draft D | ||||
6 draft B' | ||||
Matt Harbison
|
r17198 | $ hg outgoing -r 'branch(default)' ../push-dest --template='{rev} {phase} {desc|firstline}\n' | ||
Pierre-Yves David
|
r15838 | comparing with ../push-dest | ||
searching for changes | ||||
0 public A | ||||
1 public B | ||||
2 draft C | ||||
3 draft D | ||||
6 draft B' | ||||
Pierre-Yves David
|
r15713 | $ hg push ../push-dest -f # force because we push multiple heads | ||
pushing to ../push-dest | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 5 changesets with 5 changes to 5 files (+1 heads) | ||||
Boris Feld
|
r33459 | test-debug-phase: new rev 0: x -> 0 | ||
test-debug-phase: new rev 1: x -> 0 | ||||
test-debug-phase: new rev 2: x -> 1 | ||||
test-debug-phase: new rev 3: x -> 1 | ||||
test-debug-phase: new rev 4: x -> 1 | ||||
Kevin Bullock
|
r34877 | test-hook-close-phase: 4a2df7238c3b48766b5e22fafbb8a2f506ec8256: -> public | ||
test-hook-close-phase: 27547f69f25460a52fff66ad004e58da7ad3fb56: -> public | ||||
test-hook-close-phase: f838bfaca5c7226600ebcfd84f3c3c13a28d3757: -> draft | ||||
test-hook-close-phase: b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e: -> draft | ||||
test-hook-close-phase: cf9fe039dfd67e829edf6522a45de057b5c86519: -> draft | ||||
Pierre-Yves David
|
r15713 | $ hglog | ||
7 2 merge B' and E | ||||
Pierre-Yves David
|
r15820 | 6 1 B' | ||
Pierre-Yves David
|
r15713 | 5 2 H | ||
4 2 E | ||||
Pierre-Yves David
|
r15820 | 3 1 D | ||
2 1 C | ||||
Pierre-Yves David
|
r15713 | 1 0 B | ||
0 0 A | ||||
$ cd ../push-dest | ||||
$ hglog | ||||
Pierre-Yves David
|
r15820 | 4 1 B' | ||
3 1 D | ||||
2 1 C | ||||
Pierre-Yves David
|
r15713 | 1 0 B | ||
0 0 A | ||||
Pierre-Yves David
|
r16535 | |||
(Issue3303) | ||||
Check that remote secret changeset are ignore when checking creation of remote heads | ||||
Mads Kiilerich
|
r21024 | We add a secret head into the push destination. This secret head shadows a | ||
Pierre-Yves David
|
r16535 | visible shared between the initial repo and the push destination. | ||
$ hg up -q 4 # B' | ||||
$ mkcommit Z --config phases.new-commit=secret | ||||
Boris Feld
|
r33459 | test-debug-phase: new rev 5: x -> 2 | ||
Kevin Bullock
|
r34877 | test-hook-close-phase: 2713879da13d6eea1ff22b442a5a87cb31a7ce6a: -> secret | ||
Pierre-Yves David
|
r16535 | $ hg phase . | ||
5: secret | ||||
Mads Kiilerich
|
r21024 | We now try to push a new public changeset that descend from the common public | ||
head shadowed by the remote secret head. | ||||
Pierre-Yves David
|
r16535 | |||
$ cd ../initialrepo | ||||
$ hg up -q 6 #B' | ||||
$ mkcommit I | ||||
Boris Feld
|
r33459 | test-debug-phase: new rev 8: x -> 1 | ||
Pierre-Yves David
|
r16535 | created new head | ||
Kevin Bullock
|
r34877 | test-hook-close-phase: 6d6770faffce199f1fddd1cf87f6f026138cf061: -> draft | ||
Pierre-Yves David
|
r16535 | $ hg push ../push-dest | ||
pushing to ../push-dest | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files (+1 heads) | ||||
Boris Feld
|
r33459 | test-debug-phase: new rev 6: x -> 1 | ||
Kevin Bullock
|
r34877 | test-hook-close-phase: 6d6770faffce199f1fddd1cf87f6f026138cf061: -> draft | ||
Pierre-Yves David
|
r16535 | |||
:note: The "(+1 heads)" is wrong as we do not had any visible head | ||||
Pierre-Yves David
|
r18462 | check that branch cache with "served" filter are properly computed and stored | ||
Pierre-Yves David
|
r18189 | |||
Brodie Rao
|
r20185 | $ ls ../push-dest/.hg/cache/branch2* | ||
Pierre-Yves David
|
r32268 | ../push-dest/.hg/cache/branch2-base | ||
Brodie Rao
|
r20185 | ../push-dest/.hg/cache/branch2-served | ||
$ cat ../push-dest/.hg/cache/branch2-served | ||||
Pierre-Yves David
|
r18394 | 6d6770faffce199f1fddd1cf87f6f026138cf061 6 465891ffab3c47a3c23792f7dc84156e19a90722 | ||
Brodie Rao
|
r20185 | b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e o default | ||
6d6770faffce199f1fddd1cf87f6f026138cf061 o default | ||||
Pierre-Yves David
|
r18394 | $ hg heads -R ../push-dest --template '{rev}:{node} {phase}\n' #update visible cache too | ||
6:6d6770faffce199f1fddd1cf87f6f026138cf061 draft | ||||
5:2713879da13d6eea1ff22b442a5a87cb31a7ce6a secret | ||||
3:b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e draft | ||||
Brodie Rao
|
r20185 | $ ls ../push-dest/.hg/cache/branch2* | ||
Pierre-Yves David
|
r32268 | ../push-dest/.hg/cache/branch2-base | ||
Brodie Rao
|
r20185 | ../push-dest/.hg/cache/branch2-served | ||
../push-dest/.hg/cache/branch2-visible | ||||
$ cat ../push-dest/.hg/cache/branch2-served | ||||
Pierre-Yves David
|
r18394 | 6d6770faffce199f1fddd1cf87f6f026138cf061 6 465891ffab3c47a3c23792f7dc84156e19a90722 | ||
Brodie Rao
|
r20185 | b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e o default | ||
6d6770faffce199f1fddd1cf87f6f026138cf061 o default | ||||
$ cat ../push-dest/.hg/cache/branch2-visible | ||||
Pierre-Yves David
|
r18189 | 6d6770faffce199f1fddd1cf87f6f026138cf061 6 | ||
Brodie Rao
|
r20185 | b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e o default | ||
2713879da13d6eea1ff22b442a5a87cb31a7ce6a o default | ||||
6d6770faffce199f1fddd1cf87f6f026138cf061 o default | ||||
Pierre-Yves David
|
r18189 | |||
Pierre-Yves David
|
r16535 | |||
Restore condition prior extra insertion. | ||||
$ hg -q --config extensions.mq= strip . | ||||
$ hg up -q 7 | ||||
Pierre-Yves David
|
r15713 | $ cd .. | ||
Test secret changeset are not pull | ||||
$ hg init pull-dest | ||||
$ cd pull-dest | ||||
$ hg pull ../initialrepo | ||||
pulling from ../initialrepo | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 5 changesets with 5 changes to 5 files (+1 heads) | ||||
Denis Laxalde
|
r34662 | new changesets 4a2df7238c3b:cf9fe039dfd6 | ||
Boris Feld
|
r33459 | test-debug-phase: new rev 0: x -> 0 | ||
test-debug-phase: new rev 1: x -> 0 | ||||
test-debug-phase: new rev 2: x -> 0 | ||||
test-debug-phase: new rev 3: x -> 0 | ||||
test-debug-phase: new rev 4: x -> 0 | ||||
Kevin Bullock
|
r34877 | test-hook-close-phase: 4a2df7238c3b48766b5e22fafbb8a2f506ec8256: -> public | ||
test-hook-close-phase: 27547f69f25460a52fff66ad004e58da7ad3fb56: -> public | ||||
test-hook-close-phase: f838bfaca5c7226600ebcfd84f3c3c13a28d3757: -> public | ||||
test-hook-close-phase: b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e: -> public | ||||
test-hook-close-phase: cf9fe039dfd67e829edf6522a45de057b5c86519: -> public | ||||
Pierre-Yves David
|
r15713 | (run 'hg heads' to see heads, 'hg merge' to merge) | ||
$ hglog | ||||
4 0 B' | ||||
3 0 D | ||||
2 0 C | ||||
1 0 B | ||||
0 0 A | ||||
Pierre-Yves David
|
r15819 | $ cd .. | ||
Pierre-Yves David
|
r15838 | But secret can still be bundled explicitly | ||
$ cd initialrepo | ||||
$ hg bundle --base '4^' -r 'children(4)' ../secret-bundle.hg | ||||
4 changesets found | ||||
$ cd .. | ||||
Pierre-Yves David
|
r15888 | Test secret changeset are not cloned | ||
(during local clone) | ||||
$ hg clone -qU initialrepo clone-dest | ||||
Boris Feld
|
r33459 | test-debug-phase: new rev 0: x -> 0 | ||
test-debug-phase: new rev 1: x -> 0 | ||||
test-debug-phase: new rev 2: x -> 0 | ||||
test-debug-phase: new rev 3: x -> 0 | ||||
test-debug-phase: new rev 4: x -> 0 | ||||
Kevin Bullock
|
r34877 | test-hook-close-phase: 4a2df7238c3b48766b5e22fafbb8a2f506ec8256: -> public | ||
test-hook-close-phase: 27547f69f25460a52fff66ad004e58da7ad3fb56: -> public | ||||
test-hook-close-phase: f838bfaca5c7226600ebcfd84f3c3c13a28d3757: -> public | ||||
test-hook-close-phase: b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e: -> public | ||||
test-hook-close-phase: cf9fe039dfd67e829edf6522a45de057b5c86519: -> public | ||||
Pierre-Yves David
|
r15888 | $ hglog -R clone-dest | ||
4 0 B' | ||||
3 0 D | ||||
2 0 C | ||||
1 0 B | ||||
0 0 A | ||||
Gilles Moris
|
r25111 | Test summary | ||
$ hg summary -R clone-dest --verbose | ||||
parent: -1:000000000000 (no revision checked out) | ||||
branch: default | ||||
commit: (clean) | ||||
update: 5 new changesets (update) | ||||
$ hg summary -R initialrepo | ||||
parent: 7:17a481b3bccb tip | ||||
merge B' and E | ||||
branch: default | ||||
Gilles Moris
|
r25382 | commit: (clean) (secret) | ||
Gilles Moris
|
r25111 | update: 1 new changesets, 2 branch heads (merge) | ||
Gilles Moris
|
r25382 | phases: 3 draft, 3 secret | ||
Gilles Moris
|
r25111 | $ hg summary -R initialrepo --quiet | ||
parent: 7:17a481b3bccb tip | ||||
update: 1 new changesets, 2 branch heads (merge) | ||||
Pierre-Yves David
|
r15819 | Test revset | ||
$ cd initialrepo | ||||
$ hglog -r 'public()' | ||||
0 0 A | ||||
1 0 B | ||||
$ hglog -r 'draft()' | ||||
Pierre-Yves David
|
r15820 | 2 1 C | ||
3 1 D | ||||
6 1 B' | ||||
Pierre-Yves David
|
r15819 | $ hglog -r 'secret()' | ||
4 2 E | ||||
5 2 H | ||||
7 2 merge B' and E | ||||
Pierre-Yves David
|
r15830 | |||
Pierre-Yves David
|
r15907 | test that phase are displayed in log at debug level | ||
$ hg log --debug | ||||
changeset: 7:17a481b3bccb796c0521ae97903d81c52bfee4af | ||||
tag: tip | ||||
phase: secret | ||||
parent: 6:cf9fe039dfd67e829edf6522a45de057b5c86519 | ||||
parent: 4:a603bfb5a83e312131cebcd05353c217d4d21dde | ||||
manifest: 7:5e724ffacba267b2ab726c91fc8b650710deaaa8 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
files+: C D E | ||||
extra: branch=default | ||||
description: | ||||
merge B' and E | ||||
changeset: 6:cf9fe039dfd67e829edf6522a45de057b5c86519 | ||||
phase: draft | ||||
parent: 1:27547f69f25460a52fff66ad004e58da7ad3fb56 | ||||
parent: -1:0000000000000000000000000000000000000000 | ||||
manifest: 6:ab8bfef2392903058bf4ebb9e7746e8d7026b27a | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
files+: B' | ||||
extra: branch=default | ||||
description: | ||||
B' | ||||
changeset: 5:a030c6be5127abc010fcbff1851536552e6951a8 | ||||
phase: secret | ||||
parent: 4:a603bfb5a83e312131cebcd05353c217d4d21dde | ||||
parent: -1:0000000000000000000000000000000000000000 | ||||
manifest: 5:5c710aa854874fe3d5fa7192e77bdb314cc08b5a | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
files+: H | ||||
extra: branch=default | ||||
description: | ||||
H | ||||
changeset: 4:a603bfb5a83e312131cebcd05353c217d4d21dde | ||||
phase: secret | ||||
parent: 3:b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e | ||||
parent: -1:0000000000000000000000000000000000000000 | ||||
manifest: 4:7173fd1c27119750b959e3a0f47ed78abe75d6dc | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
files+: E | ||||
extra: branch=default | ||||
description: | ||||
E | ||||
changeset: 3:b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e | ||||
phase: draft | ||||
parent: 2:f838bfaca5c7226600ebcfd84f3c3c13a28d3757 | ||||
parent: -1:0000000000000000000000000000000000000000 | ||||
manifest: 3:6e1f4c47ecb533ffd0c8e52cdc88afb6cd39e20c | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
files+: D | ||||
extra: branch=default | ||||
description: | ||||
D | ||||
changeset: 2:f838bfaca5c7226600ebcfd84f3c3c13a28d3757 | ||||
phase: draft | ||||
parent: 1:27547f69f25460a52fff66ad004e58da7ad3fb56 | ||||
parent: -1:0000000000000000000000000000000000000000 | ||||
manifest: 2:66a5a01817fdf5239c273802b5b7618d051c89e4 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
files+: C | ||||
extra: branch=default | ||||
description: | ||||
C | ||||
changeset: 1:27547f69f25460a52fff66ad004e58da7ad3fb56 | ||||
Jordi Gutiérrez Hermoso
|
r22765 | phase: public | ||
Pierre-Yves David
|
r15907 | parent: 0:4a2df7238c3b48766b5e22fafbb8a2f506ec8256 | ||
parent: -1:0000000000000000000000000000000000000000 | ||||
manifest: 1:cb5cbbc1bfbf24cc34b9e8c16914e9caa2d2a7fd | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
files+: B | ||||
extra: branch=default | ||||
description: | ||||
B | ||||
changeset: 0:4a2df7238c3b48766b5e22fafbb8a2f506ec8256 | ||||
Jordi Gutiérrez Hermoso
|
r22765 | phase: public | ||
Pierre-Yves David
|
r15907 | parent: -1:0000000000000000000000000000000000000000 | ||
parent: -1:0000000000000000000000000000000000000000 | ||||
manifest: 0:007d8c9d88841325f5c6b06371b35b4e8a2b1a83 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
files+: A | ||||
extra: branch=default | ||||
description: | ||||
A | ||||
Matt Mackall
|
r17985 | |||
André Sintzoff
|
r17979 | |||
(Issue3707) | ||||
test invalid phase name | ||||
$ mkcommit I --config phases.new-commit='babar' | ||||
transaction abort! | ||||
rollback completed | ||||
abort: phases.new-commit: not a valid phase name ('babar') | ||||
[255] | ||||
Pierre-Yves David
|
r15830 | Test phase command | ||
=================== | ||||
initial picture | ||||
$ hg log -G --template "{rev} {phase} {desc}\n" | ||||
@ 7 secret merge B' and E | ||||
|\ | ||||
| o 6 draft B' | ||||
| | | ||||
+---o 5 secret H | ||||
| | | ||||
o | 4 secret E | ||||
| | | ||||
o | 3 draft D | ||||
| | | ||||
o | 2 draft C | ||||
|/ | ||||
o 1 public B | ||||
| | ||||
o 0 public A | ||||
display changesets phase | ||||
(mixing -r and plain rev specification) | ||||
$ hg phase 1::4 -r 7 | ||||
1: public | ||||
2: draft | ||||
3: draft | ||||
4: secret | ||||
7: secret | ||||
move changeset forward | ||||
(with -r option) | ||||
$ hg phase --public -r 2 | ||||
Boris Feld
|
r33459 | test-debug-phase: move rev 2: 1 -> 0 | ||
Kevin Bullock
|
r34877 | test-hook-close-phase: f838bfaca5c7226600ebcfd84f3c3c13a28d3757: draft -> public | ||
Pierre-Yves David
|
r15830 | $ hg log -G --template "{rev} {phase} {desc}\n" | ||
@ 7 secret merge B' and E | ||||
|\ | ||||
| o 6 draft B' | ||||
| | | ||||
+---o 5 secret H | ||||
| | | ||||
o | 4 secret E | ||||
| | | ||||
o | 3 draft D | ||||
| | | ||||
o | 2 public C | ||||
|/ | ||||
o 1 public B | ||||
| | ||||
o 0 public A | ||||
move changeset backward | ||||
(without -r option) | ||||
$ hg phase --draft --force 2 | ||||
Boris Feld
|
r33459 | test-debug-phase: move rev 2: 0 -> 1 | ||
Kevin Bullock
|
r34877 | test-hook-close-phase: f838bfaca5c7226600ebcfd84f3c3c13a28d3757: public -> draft | ||
Pierre-Yves David
|
r15830 | $ hg log -G --template "{rev} {phase} {desc}\n" | ||
@ 7 secret merge B' and E | ||||
|\ | ||||
| o 6 draft B' | ||||
| | | ||||
+---o 5 secret H | ||||
| | | ||||
o | 4 secret E | ||||
| | | ||||
o | 3 draft D | ||||
| | | ||||
o | 2 draft C | ||||
|/ | ||||
o 1 public B | ||||
| | ||||
o 0 public A | ||||
Jun Wu
|
r31152 | move changeset forward and backward | ||
Pierre-Yves David
|
r15830 | |||
$ hg phase --draft --force 1::4 | ||||
Boris Feld
|
r33459 | test-debug-phase: move rev 1: 0 -> 1 | ||
test-debug-phase: move rev 4: 2 -> 1 | ||||
Kevin Bullock
|
r34877 | test-hook-close-phase: 27547f69f25460a52fff66ad004e58da7ad3fb56: public -> draft | ||
test-hook-close-phase: a603bfb5a83e312131cebcd05353c217d4d21dde: secret -> draft | ||||
Pierre-Yves David
|
r15830 | $ hg log -G --template "{rev} {phase} {desc}\n" | ||
@ 7 secret merge B' and E | ||||
|\ | ||||
| o 6 draft B' | ||||
| | | ||||
+---o 5 secret H | ||||
| | | ||||
o | 4 draft E | ||||
| | | ||||
o | 3 draft D | ||||
| | | ||||
o | 2 draft C | ||||
|/ | ||||
o 1 draft B | ||||
| | ||||
o 0 public A | ||||
Patrick Mezard
|
r16097 | test partial failure | ||
$ hg phase --public 7 | ||||
Boris Feld
|
r33459 | test-debug-phase: move rev 1: 1 -> 0 | ||
test-debug-phase: move rev 2: 1 -> 0 | ||||
test-debug-phase: move rev 3: 1 -> 0 | ||||
test-debug-phase: move rev 4: 1 -> 0 | ||||
test-debug-phase: move rev 6: 1 -> 0 | ||||
test-debug-phase: move rev 7: 2 -> 0 | ||||
Kevin Bullock
|
r34877 | test-hook-close-phase: 27547f69f25460a52fff66ad004e58da7ad3fb56: draft -> public | ||
test-hook-close-phase: f838bfaca5c7226600ebcfd84f3c3c13a28d3757: draft -> public | ||||
test-hook-close-phase: b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e: draft -> public | ||||
test-hook-close-phase: a603bfb5a83e312131cebcd05353c217d4d21dde: draft -> public | ||||
test-hook-close-phase: cf9fe039dfd67e829edf6522a45de057b5c86519: draft -> public | ||||
test-hook-close-phase: 17a481b3bccb796c0521ae97903d81c52bfee4af: secret -> public | ||||
Patrick Mezard
|
r16097 | $ hg phase --draft '5 or 7' | ||
Boris Feld
|
r33459 | test-debug-phase: move rev 5: 2 -> 1 | ||
Kevin Bullock
|
r34877 | test-hook-close-phase: a030c6be5127abc010fcbff1851536552e6951a8: secret -> draft | ||
Martin Geisler
|
r20093 | cannot move 1 changesets to a higher phase, use --force | ||
Patrick Mezard
|
r16097 | phase changed for 1 changesets | ||
[1] | ||||
$ hg log -G --template "{rev} {phase} {desc}\n" | ||||
@ 7 public merge B' and E | ||||
|\ | ||||
| o 6 public B' | ||||
| | | ||||
+---o 5 draft H | ||||
| | | ||||
o | 4 public E | ||||
| | | ||||
o | 3 public D | ||||
| | | ||||
o | 2 public C | ||||
|/ | ||||
o 1 public B | ||||
| | ||||
o 0 public A | ||||
test complete failure | ||||
$ hg phase --draft 7 | ||||
Martin Geisler
|
r20093 | cannot move 1 changesets to a higher phase, use --force | ||
Patrick Mezard
|
r16097 | no phases changed | ||
[1] | ||||
Mads Kiilerich
|
r16913 | |||
$ cd .. | ||||
Pierre-Yves David
|
r20332 | |||
test hidden changeset are not cloned as public (issue3935) | ||||
$ cd initialrepo | ||||
(enabling evolution) | ||||
Durham Goode
|
r22955 | $ cat >> $HGRCPATH << EOF | ||
> [experimental] | ||||
Boris Feld
|
r34867 | > evolution.createmarkers=True | ||
Pierre-Yves David
|
r20332 | > EOF | ||
(making a changeset hidden; H in that case) | ||||
$ hg debugobsolete `hg id --debug -r 5` | ||||
r43163 | 1 new obsolescence markers | |||
Boris Feld
|
r33542 | obsoleted 1 changesets | ||
Pierre-Yves David
|
r20332 | |||
$ cd .. | ||||
$ hg clone initialrepo clonewithobs | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 7 changesets with 6 changes to 6 files | ||||
Denis Laxalde
|
r34662 | new changesets 4a2df7238c3b:17a481b3bccb | ||
Boris Feld
|
r33459 | test-debug-phase: new rev 0: x -> 0 | ||
test-debug-phase: new rev 1: x -> 0 | ||||
test-debug-phase: new rev 2: x -> 0 | ||||
test-debug-phase: new rev 3: x -> 0 | ||||
test-debug-phase: new rev 4: x -> 0 | ||||
test-debug-phase: new rev 5: x -> 0 | ||||
test-debug-phase: new rev 6: x -> 0 | ||||
Kevin Bullock
|
r34877 | test-hook-close-phase: 4a2df7238c3b48766b5e22fafbb8a2f506ec8256: -> public | ||
test-hook-close-phase: 27547f69f25460a52fff66ad004e58da7ad3fb56: -> public | ||||
test-hook-close-phase: f838bfaca5c7226600ebcfd84f3c3c13a28d3757: -> public | ||||
test-hook-close-phase: b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e: -> public | ||||
test-hook-close-phase: a603bfb5a83e312131cebcd05353c217d4d21dde: -> public | ||||
test-hook-close-phase: cf9fe039dfd67e829edf6522a45de057b5c86519: -> public | ||||
test-hook-close-phase: 17a481b3bccb796c0521ae97903d81c52bfee4af: -> public | ||||
Pierre-Yves David
|
r20332 | updating to branch default | ||
6 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd clonewithobs | ||||
$ hg log -G --template "{rev} {phase} {desc}\n" | ||||
@ 6 public merge B' and E | ||||
|\ | ||||
| o 5 public B' | ||||
| | | ||||
o | 4 public E | ||||
| | | ||||
o | 3 public D | ||||
| | | ||||
o | 2 public C | ||||
|/ | ||||
o 1 public B | ||||
| | ||||
o 0 public A | ||||
Yuya Nishihara
|
r20530 | test verify repo containing hidden changesets, which should not abort just | ||
because repo.cancopy() is False | ||||
Pierre-Yves David
|
r20332 | |||
Yuya Nishihara
|
r20530 | $ cd ../initialrepo | ||
$ hg verify | ||||
checking changesets | ||||
checking manifests | ||||
crosschecking files in changesets and manifests | ||||
checking files | ||||
Meirambek Omyrzak
|
r39525 | checked 8 changesets with 7 changes to 7 files | ||
FUJIWARA Katsunori
|
r31053 | |||
$ cd .. | ||||
check whether HG_PENDING makes pending changes only in related | ||||
repositories visible to an external hook. | ||||
(emulate a transaction running concurrently by copied | ||||
.hg/phaseroots.pending in subsequent test) | ||||
$ cat > $TESTTMP/savepending.sh <<EOF | ||||
> cp .hg/store/phaseroots.pending .hg/store/phaseroots.pending.saved | ||||
> exit 1 # to avoid changing phase for subsequent tests | ||||
> EOF | ||||
$ cd push-dest | ||||
$ hg phase 6 | ||||
6: draft | ||||
$ hg --config hooks.pretxnclose="sh $TESTTMP/savepending.sh" phase -f -s 6 | ||||
transaction abort! | ||||
rollback completed | ||||
abort: pretxnclose hook exited with status 1 | ||||
[255] | ||||
$ cp .hg/store/phaseroots.pending.saved .hg/store/phaseroots.pending | ||||
(check (in)visibility of phaseroot while transaction running in repo) | ||||
$ cat > $TESTTMP/checkpending.sh <<EOF | ||||
> echo '@initialrepo' | ||||
Matt Harbison
|
r31767 | > hg -R "$TESTTMP/initialrepo" phase 7 | ||
FUJIWARA Katsunori
|
r31053 | > echo '@push-dest' | ||
Matt Harbison
|
r31767 | > hg -R "$TESTTMP/push-dest" phase 6 | ||
FUJIWARA Katsunori
|
r31053 | > exit 1 # to avoid changing phase for subsequent tests | ||
> EOF | ||||
$ cd ../initialrepo | ||||
$ hg phase 7 | ||||
7: public | ||||
$ hg --config hooks.pretxnclose="sh $TESTTMP/checkpending.sh" phase -f -s 7 | ||||
@initialrepo | ||||
7: secret | ||||
@push-dest | ||||
6: draft | ||||
transaction abort! | ||||
rollback completed | ||||
abort: pretxnclose hook exited with status 1 | ||||
[255] | ||||
Boris Feld
|
r34712 | |||
Check that pretxnclose-phase hook can control phase movement | ||||
$ hg phase --force b3325c91a4d9 --secret | ||||
test-debug-phase: move rev 3: 0 -> 2 | ||||
test-debug-phase: move rev 4: 0 -> 2 | ||||
test-debug-phase: move rev 5: 1 -> 2 | ||||
test-debug-phase: move rev 7: 0 -> 2 | ||||
Kevin Bullock
|
r34877 | test-hook-close-phase: b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e: public -> secret | ||
test-hook-close-phase: a603bfb5a83e312131cebcd05353c217d4d21dde: public -> secret | ||||
test-hook-close-phase: a030c6be5127abc010fcbff1851536552e6951a8: draft -> secret | ||||
test-hook-close-phase: 17a481b3bccb796c0521ae97903d81c52bfee4af: public -> secret | ||||
Boris Feld
|
r34712 | $ hg log -G -T phases | ||
@ changeset: 7:17a481b3bccb | ||||
|\ tag: tip | ||||
| | phase: secret | ||||
| | parent: 6:cf9fe039dfd6 | ||||
| | parent: 4:a603bfb5a83e | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: merge B' and E | ||||
| | | ||||
| o changeset: 6:cf9fe039dfd6 | ||||
| | phase: public | ||||
| | parent: 1:27547f69f254 | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: B' | ||||
| | | ||||
o | changeset: 4:a603bfb5a83e | ||||
| | phase: secret | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: E | ||||
| | | ||||
o | changeset: 3:b3325c91a4d9 | ||||
| | phase: secret | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: D | ||||
| | | ||||
o | changeset: 2:f838bfaca5c7 | ||||
|/ phase: public | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: C | ||||
| | ||||
o changeset: 1:27547f69f254 | ||||
| phase: public | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: B | ||||
| | ||||
o changeset: 0:4a2df7238c3b | ||||
phase: public | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: A | ||||
Install a hook that prevent b3325c91a4d9 to become public | ||||
$ cat >> .hg/hgrc << EOF | ||||
> [hooks] | ||||
Matt Harbison
|
r34939 | > pretxnclose-phase.nopublish_D = sh -c "(echo \$HG_NODE| grep -v b3325c91a4d9>/dev/null) || [ 'public' != \$HG_PHASE ]" | ||
Boris Feld
|
r34712 | > EOF | ||
Try various actions. only the draft move should succeed | ||||
$ hg phase --public b3325c91a4d9 | ||||
transaction abort! | ||||
rollback completed | ||||
abort: pretxnclose-phase.nopublish_D hook exited with status 1 | ||||
[255] | ||||
$ hg phase --public a603bfb5a83e | ||||
transaction abort! | ||||
rollback completed | ||||
abort: pretxnclose-phase.nopublish_D hook exited with status 1 | ||||
[255] | ||||
$ hg phase --draft 17a481b3bccb | ||||
test-debug-phase: move rev 3: 2 -> 1 | ||||
test-debug-phase: move rev 4: 2 -> 1 | ||||
test-debug-phase: move rev 7: 2 -> 1 | ||||
Kevin Bullock
|
r34877 | test-hook-close-phase: b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e: secret -> draft | ||
test-hook-close-phase: a603bfb5a83e312131cebcd05353c217d4d21dde: secret -> draft | ||||
test-hook-close-phase: 17a481b3bccb796c0521ae97903d81c52bfee4af: secret -> draft | ||||
Boris Feld
|
r34712 | $ hg phase --public 17a481b3bccb | ||
transaction abort! | ||||
rollback completed | ||||
abort: pretxnclose-phase.nopublish_D hook exited with status 1 | ||||
[255] | ||||
Boris Feld
|
r39333 | |||
$ cd .. | ||||
Test for the "internal" phase | ||||
============================= | ||||
Boris Feld
|
r39335 | Check we deny its usage on older repository | ||
$ hg init no-internal-phase --config format.internal-phase=no | ||||
$ cd no-internal-phase | ||||
$ cat .hg/requires | ||||
dotencode | ||||
fncache | ||||
generaldelta | ||||
revlogv1 | ||||
Boris Feld
|
r40937 | sparserevlog | ||
Boris Feld
|
r39335 | store | ||
$ echo X > X | ||||
$ hg add X | ||||
$ hg status | ||||
A X | ||||
$ hg --config "phases.new-commit=internal" commit -m "my test internal commit" 2>&1 | grep ProgrammingError | ||||
** ProgrammingError: this repository does not support the internal phase | ||||
raise error.ProgrammingError(msg) | ||||
Pulkit Goyal
|
r45772 | *ProgrammingError: this repository does not support the internal phase (glob) | ||
Boris Feld
|
r40463 | $ hg --config "phases.new-commit=archived" commit -m "my test archived commit" 2>&1 | grep ProgrammingError | ||
** ProgrammingError: this repository does not support the archived phase | ||||
raise error.ProgrammingError(msg) | ||||
Pulkit Goyal
|
r45772 | *ProgrammingError: this repository does not support the archived phase (glob) | ||
Boris Feld
|
r39335 | |||
$ cd .. | ||||
Check it works fine with repository that supports it. | ||||
$ hg init internal-phase --config format.internal-phase=yes | ||||
Boris Feld
|
r39333 | $ cd internal-phase | ||
Boris Feld
|
r39335 | $ cat .hg/requires | ||
dotencode | ||||
fncache | ||||
generaldelta | ||||
internal-phase | ||||
revlogv1 | ||||
Boris Feld
|
r40937 | sparserevlog | ||
Boris Feld
|
r39335 | store | ||
Boris Feld
|
r39333 | $ mkcommit A | ||
test-debug-phase: new rev 0: x -> 1 | ||||
test-hook-close-phase: 4a2df7238c3b48766b5e22fafbb8a2f506ec8256: -> draft | ||||
Commit an internal changesets | ||||
$ echo B > B | ||||
$ hg add B | ||||
$ hg status | ||||
A B | ||||
$ hg --config "phases.new-commit=internal" commit -m "my test internal commit" | ||||
test-debug-phase: new rev 1: x -> 96 | ||||
test-hook-close-phase: c01c42dffc7f81223397e99652a0703f83e1c5ea: -> internal | ||||
Boris Feld
|
r40463 | The changeset is a working parent descendant. | ||
Per the usual visibility rules, it is made visible. | ||||
Boris Feld
|
r39333 | |||
$ hg log -G -l 3 | ||||
@ changeset: 1:c01c42dffc7f | ||||
| tag: tip | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: my test internal commit | ||||
| | ||||
o changeset: 0:4a2df7238c3b | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: A | ||||
Commit is hidden as expected | ||||
$ hg up 0 | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg log -G | ||||
@ changeset: 0:4a2df7238c3b | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: A | ||||
Boris Feld
|
r40463 | |||
Test for archived phase | ||||
----------------------- | ||||
Commit an archived changesets | ||||
$ echo B > B | ||||
$ hg add B | ||||
$ hg status | ||||
A B | ||||
$ hg --config "phases.new-commit=archived" commit -m "my test archived commit" | ||||
test-debug-phase: new rev 2: x -> 32 | ||||
test-hook-close-phase: 8df5997c3361518f733d1ae67cd3adb9b0eaf125: -> archived | ||||
The changeset is a working parent descendant. | ||||
Per the usual visibility rules, it is made visible. | ||||
$ hg log -G -l 3 | ||||
@ changeset: 2:8df5997c3361 | ||||
| tag: tip | ||||
| parent: 0:4a2df7238c3b | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: my test archived commit | ||||
| | ||||
o changeset: 0:4a2df7238c3b | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: A | ||||
Commit is hidden as expected | ||||
$ hg up 0 | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg log -G | ||||
@ changeset: 0:4a2df7238c3b | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: A | ||||