test-phases.t
628 lines
| 13.4 KiB
| text/troff
|
Tads3Lexer
/ tests / test-phases.t
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 | ||
New commit are draft by default | ||||
$ hglog | ||||
0 1 A | ||||
Following commit are draft too | ||||
$ mkcommit B | ||||
Pierre-Yves David
|
r15423 | |||
$ hglog | ||||
Pierre-Yves David
|
r15694 | 1 1 B | ||
0 1 A | ||||
Draft commit are properly created over public one: | ||||
Pierre-Yves David
|
r15830 | $ hg phase --public . | ||
Gilles Moris
|
r25120 | $ hg phase | ||
1: public | ||||
Pierre-Yves David
|
r15694 | $ hglog | ||
1 0 B | ||||
0 0 A | ||||
$ mkcommit C | ||||
$ mkcommit D | ||||
$ 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' | ||
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 | ||||
$ 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'" | ||||
created new head | ||||
$ 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" | ||
$ 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) | ||||
$ 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 | ||||
$ 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 | ||||
created new head | ||||
$ 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) | ||||
: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* | ||
../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* | ||
../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) | ||||
(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 | ||||
$ 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 | ||||
$ 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 | ||||
$ 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 | ||||
$ 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 | ||||
$ hg phase --draft '5 or 7' | ||||
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] | ||||
> evolution=createmarkers | ||||
Pierre-Yves David
|
r20332 | > EOF | ||
(making a changeset hidden; H in that case) | ||||
$ hg debugobsolete `hg id --debug -r 5` | ||||
$ cd .. | ||||
$ hg clone initialrepo clonewithobs | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 7 changesets with 6 changes to 6 files | ||||
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 | ||||
7 files, 8 changesets, 7 total revisions | ||||
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] | ||||