##// END OF EJS Templates
tests: glob 'mercurial.error' in test-phases.t...
tests: glob 'mercurial.error' in test-phases.t On python 2 with chg, `mercurial.error` is omitted while printing error. On other cases it's there in error message. I did tried to understand what might be the cause was unable to find one on quick skim through the code.

File last commit:

r45772:41021660 stable
r45772:41021660 stable
Show More
test-phases.t
1001 lines | 27.0 KiB | text/troff | Tads3Lexer
Matt Harbison
tests: adjust hooks for Windows...
r34939 $ cat > $TESTTMP/hook.sh << 'EOF'
> echo "test-hook-close-phase: $HG_NODE: $HG_OLDPHASE -> $HG_PHASE"
> EOF
Boris Feld
phases: test phases tracking at the transaction level...
r33459
$ cat >> $HGRCPATH << EOF
> [extensions]
> phasereport=$TESTDIR/testlib/ext-phase-report.py
Boris Feld
phase: add a dedicated txnclose-phase hook...
r34711 > [hooks]
Matt Harbison
tests: adjust hooks for Windows...
r34939 > txnclose-phase.test = sh $TESTTMP/hook.sh
Boris Feld
phases: test phases tracking at the transaction level...
r33459 > EOF
Mads Kiilerich
tests: don't use alias...
r16013 $ hglog() { hg log --template "{rev} {phaseidx} {desc}\n" $*; }
Pierre-Yves David
phases: add a bit more test for local phase movement.
r15694 $ mkcommit() {
> echo "$1" > "$1"
> hg add "$1"
Pierre-Yves David
phases: test the new-commit option and proper inheritence of phase
r15712 > message="$1"
> shift
> hg ci -m "$message" $*
Pierre-Yves David
phases: add a bit more test for local phase movement.
r15694 > }
Pierre-Yves David
phases: add a very simple test...
r15423
$ hg init initialrepo
$ cd initialrepo
Patrick Mezard
test-phases: test changing null revision phase...
r16622
Cannot change null revision phase
$ hg phase --force --secret null
Patrick Mezard
phase: make if abort on nullid for the good reason...
r16659 abort: cannot change null revision phase
Patrick Mezard
test-phases: test changing null revision phase...
r16622 [255]
$ hg phase null
-1: public
Pierre-Yves David
phases: add a bit more test for local phase movement.
r15694 $ mkcommit A
Boris Feld
phases: test phases tracking at the transaction level...
r33459 test-debug-phase: new rev 0: x -> 1
Kevin Bullock
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: 4a2df7238c3b48766b5e22fafbb8a2f506ec8256: -> draft
Pierre-Yves David
phases: add a bit more test for local phase movement.
r15694
New commit are draft by default
$ hglog
0 1 A
Following commit are draft too
$ mkcommit B
Boris Feld
phases: test phases tracking at the transaction level...
r33459 test-debug-phase: new rev 1: x -> 1
Kevin Bullock
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: 27547f69f25460a52fff66ad004e58da7ad3fb56: -> draft
Pierre-Yves David
phases: add a very simple test...
r15423
$ hglog
Pierre-Yves David
phases: add a bit more test for local phase movement.
r15694 1 1 B
0 1 A
Rodrigo Damazio Bovendorp
phases: make the working directory consistently a draft...
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
phases: add a bit more test for local phase movement.
r15694
Pierre-Yves David
phases: add a phases command to display and manipulate phases
r15830 $ hg phase --public .
Boris Feld
phases: test phases tracking at the transaction level...
r33459 test-debug-phase: move rev 0: 1 -> 0
test-debug-phase: move rev 1: 1 -> 0
Kevin Bullock
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: 4a2df7238c3b48766b5e22fafbb8a2f506ec8256: draft -> public
test-hook-close-phase: 27547f69f25460a52fff66ad004e58da7ad3fb56: draft -> public
Rodrigo Damazio Bovendorp
phases: make the working directory consistently a draft...
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
phase: default to current revision if no rev is provided (issue4666)
r25120 $ hg phase
1: public
Pierre-Yves David
phases: add a bit more test for local phase movement.
r15694 $ hglog
1 0 B
0 0 A
$ mkcommit C
Boris Feld
phases: test phases tracking at the transaction level...
r33459 test-debug-phase: new rev 2: x -> 1
Kevin Bullock
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: f838bfaca5c7226600ebcfd84f3c3c13a28d3757: -> draft
Pierre-Yves David
phases: add a bit more test for local phase movement.
r15694 $ mkcommit D
Boris Feld
phases: test phases tracking at the transaction level...
r33459 test-debug-phase: new rev 3: x -> 1
Kevin Bullock
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e: -> draft
Pierre-Yves David
phases: add a bit more test for local phase movement.
r15694
$ hglog
3 1 D
2 1 C
1 0 B
0 0 A
Pierre-Yves David
phases: test the new-commit option and proper inheritence of phase
r15712
Test creating changeset as secret
Pierre-Yves David
phases: allow phase name in phases.new-commit settings...
r16030 $ mkcommit E --config phases.new-commit='secret'
Boris Feld
phases: test phases tracking at the transaction level...
r33459 test-debug-phase: new rev 4: x -> 2
Kevin Bullock
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: a603bfb5a83e312131cebcd05353c217d4d21dde: -> secret
Pierre-Yves David
phases: test the new-commit option and proper inheritence of phase
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
phases: test phases tracking at the transaction level...
r33459 test-debug-phase: new rev 5: x -> 2
Kevin Bullock
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: a030c6be5127abc010fcbff1851536552e6951a8: -> secret
Pierre-Yves David
phases: test the new-commit option and proper inheritence of phase
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
phases: test phases tracking at the transaction level...
r33459 test-debug-phase: new rev 6: x -> 1
Pierre-Yves David
phases: test the new-commit option and proper inheritence of phase
r15712 created new head
Kevin Bullock
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: cf9fe039dfd67e829edf6522a45de057b5c86519: -> draft
Pierre-Yves David
phases: test the new-commit option and proper inheritence of phase
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
phase: default to current revision if no rev is provided (issue4666)
r25120 $ hg phase
6: draft
4: secret
Pierre-Yves David
phases: test the new-commit option and proper inheritence of phase
r15712 $ hg ci -m "merge B' and E"
Boris Feld
phases: test phases tracking at the transaction level...
r33459 test-debug-phase: new rev 7: x -> 2
Kevin Bullock
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: 17a481b3bccb796c0521ae97903d81c52bfee4af: -> secret
Boris Feld
phases: test phases tracking at the transaction level...
r33459
Pierre-Yves David
phases: test the new-commit option and proper inheritence of phase
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
phases: do not exchange secret changesets...
r15713 Test secret changeset are not pushed
$ hg init ../push-dest
Pierre-Yves David
phases: fix phase synchronization on push...
r15820 $ cat > ../push-dest/.hg/hgrc << EOF
> [phases]
> publish=False
> EOF
Pierre-Yves David
phases: make outgoing object and discovery aware of exclusion...
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
outgoing: accept revset argument for --rev...
r17198 $ hg outgoing -r 'branch(default)' ../push-dest --template='{rev} {phase} {desc|firstline}\n'
Pierre-Yves David
phases: make outgoing object and discovery aware of exclusion...
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
phases: do not exchange secret changesets...
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
phases: test phases tracking at the transaction level...
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
phases: pass phase names to hooks instead of internal values
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
phases: do not exchange secret changesets...
r15713 $ hglog
7 2 merge B' and E
Pierre-Yves David
phases: fix phase synchronization on push...
r15820 6 1 B'
Pierre-Yves David
phases: do not exchange secret changesets...
r15713 5 2 H
4 2 E
Pierre-Yves David
phases: fix phase synchronization on push...
r15820 3 1 D
2 1 C
Pierre-Yves David
phases: do not exchange secret changesets...
r15713 1 0 B
0 0 A
$ cd ../push-dest
$ hglog
Pierre-Yves David
phases: fix phase synchronization on push...
r15820 4 1 B'
3 1 D
2 1 C
Pierre-Yves David
phases: do not exchange secret changesets...
r15713 1 0 B
0 0 A
Pierre-Yves David
branchmap: server should not advertise secret changeset in branchmap (Issue3303)...
r16535
(Issue3303)
Check that remote secret changeset are ignore when checking creation of remote heads
Mads Kiilerich
spelling: fixes from spell checker
r21024 We add a secret head into the push destination. This secret head shadows a
Pierre-Yves David
branchmap: server should not advertise secret changeset in branchmap (Issue3303)...
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
phases: test phases tracking at the transaction level...
r33459 test-debug-phase: new rev 5: x -> 2
Kevin Bullock
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: 2713879da13d6eea1ff22b442a5a87cb31a7ce6a: -> secret
Pierre-Yves David
branchmap: server should not advertise secret changeset in branchmap (Issue3303)...
r16535 $ hg phase .
5: secret
Mads Kiilerich
spelling: fixes from spell checker
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
branchmap: server should not advertise secret changeset in branchmap (Issue3303)...
r16535
$ cd ../initialrepo
$ hg up -q 6 #B'
$ mkcommit I
Boris Feld
phases: test phases tracking at the transaction level...
r33459 test-debug-phase: new rev 8: x -> 1
Pierre-Yves David
branchmap: server should not advertise secret changeset in branchmap (Issue3303)...
r16535 created new head
Kevin Bullock
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: 6d6770faffce199f1fddd1cf87f6f026138cf061: -> draft
Pierre-Yves David
branchmap: server should not advertise secret changeset in branchmap (Issue3303)...
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
phases: test phases tracking at the transaction level...
r33459 test-debug-phase: new rev 6: x -> 1
Kevin Bullock
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: 6d6770faffce199f1fddd1cf87f6f026138cf061: -> draft
Pierre-Yves David
branchmap: server should not advertise secret changeset in branchmap (Issue3303)...
r16535
:note: The "(+1 heads)" is wrong as we do not had any visible head
Pierre-Yves David
documentation: update to new filter names...
r18462 check that branch cache with "served" filter are properly computed and stored
Pierre-Yves David
branchmap: enable caching for filtered version too...
r18189
Brodie Rao
branchmap: cache open/closed branch head information...
r20185 $ ls ../push-dest/.hg/cache/branch2*
Pierre-Yves David
caches: stop warming the cache after changegroup application...
r32268 ../push-dest/.hg/cache/branch2-base
Brodie Rao
branchmap: cache open/closed branch head information...
r20185 ../push-dest/.hg/cache/branch2-served
$ cat ../push-dest/.hg/cache/branch2-served
Pierre-Yves David
branchmap: update cache of 'unserved' filter on new changesets...
r18394 6d6770faffce199f1fddd1cf87f6f026138cf061 6 465891ffab3c47a3c23792f7dc84156e19a90722
Brodie Rao
branchmap: cache open/closed branch head information...
r20185 b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e o default
6d6770faffce199f1fddd1cf87f6f026138cf061 o default
Pierre-Yves David
branchmap: update cache of 'unserved' filter on new changesets...
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
branchmap: cache open/closed branch head information...
r20185 $ ls ../push-dest/.hg/cache/branch2*
Pierre-Yves David
caches: stop warming the cache after changegroup application...
r32268 ../push-dest/.hg/cache/branch2-base
Brodie Rao
branchmap: cache open/closed branch head information...
r20185 ../push-dest/.hg/cache/branch2-served
../push-dest/.hg/cache/branch2-visible
$ cat ../push-dest/.hg/cache/branch2-served
Pierre-Yves David
branchmap: update cache of 'unserved' filter on new changesets...
r18394 6d6770faffce199f1fddd1cf87f6f026138cf061 6 465891ffab3c47a3c23792f7dc84156e19a90722
Brodie Rao
branchmap: cache open/closed branch head information...
r20185 b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e o default
6d6770faffce199f1fddd1cf87f6f026138cf061 o default
$ cat ../push-dest/.hg/cache/branch2-visible
Pierre-Yves David
branchmap: enable caching for filtered version too...
r18189 6d6770faffce199f1fddd1cf87f6f026138cf061 6
Brodie Rao
branchmap: cache open/closed branch head information...
r20185 b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e o default
2713879da13d6eea1ff22b442a5a87cb31a7ce6a o default
6d6770faffce199f1fddd1cf87f6f026138cf061 o default
Pierre-Yves David
branchmap: enable caching for filtered version too...
r18189
Pierre-Yves David
branchmap: server should not advertise secret changeset in branchmap (Issue3303)...
r16535
Restore condition prior extra insertion.
$ hg -q --config extensions.mq= strip .
$ hg up -q 7
Pierre-Yves David
phases: do not exchange secret changesets...
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
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 4a2df7238c3b:cf9fe039dfd6
Boris Feld
phases: test phases tracking at the transaction level...
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
phases: pass phase names to hooks instead of internal values
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
phases: do not exchange secret changesets...
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
phases: implements simple revset symbol...
r15819 $ cd ..
Pierre-Yves David
phases: make outgoing object and discovery aware of exclusion...
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
phases: exclude secret when doing a local clone...
r15888 Test secret changeset are not cloned
(during local clone)
$ hg clone -qU initialrepo clone-dest
Boris Feld
phases: test phases tracking at the transaction level...
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
phases: pass phase names to hooks instead of internal values
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
phases: exclude secret when doing a local clone...
r15888 $ hglog -R clone-dest
4 0 B'
3 0 D
2 0 C
1 0 B
0 0 A
Gilles Moris
summary: add a phase line (draft, secret) to the output...
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
summary: move the parents phase marker to commit line (issue4688)...
r25382 commit: (clean) (secret)
Gilles Moris
summary: add a phase line (draft, secret) to the output...
r25111 update: 1 new changesets, 2 branch heads (merge)
Gilles Moris
summary: move the parents phase marker to commit line (issue4688)...
r25382 phases: 3 draft, 3 secret
Gilles Moris
summary: add a phase line (draft, secret) to the output...
r25111 $ hg summary -R initialrepo --quiet
parent: 7:17a481b3bccb tip
update: 1 new changesets, 2 branch heads (merge)
Pierre-Yves David
phases: implements simple revset symbol...
r15819 Test revset
$ cd initialrepo
$ hglog -r 'public()'
0 0 A
1 0 B
$ hglog -r 'draft()'
Pierre-Yves David
phases: fix phase synchronization on push...
r15820 2 1 C
3 1 D
6 1 B'
Pierre-Yves David
phases: implements simple revset symbol...
r15819 $ hglog -r 'secret()'
4 2 E
5 2 H
7 2 merge B' and E
Pierre-Yves David
phases: add a phases command to display and manipulate phases
r15830
Pierre-Yves David
changeset_printer: display changeset phase on debug level...
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
log: do not hide the public phase in debug mode (BC)...
r22765 phase: public
Pierre-Yves David
changeset_printer: display changeset phase on debug level...
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
log: do not hide the public phase in debug mode (BC)...
r22765 phase: public
Pierre-Yves David
changeset_printer: display changeset phase on debug level...
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
tests: fix broken fix of test-phases output
r17985
André Sintzoff
phases: fix missing "error" module import (issue3707)
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
phases: add a phases command to display and manipulate phases
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
phases: test phases tracking at the transaction level...
r33459 test-debug-phase: move rev 2: 1 -> 0
Kevin Bullock
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: f838bfaca5c7226600ebcfd84f3c3c13a28d3757: draft -> public
Pierre-Yves David
phases: add a phases command to display and manipulate phases
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
phases: test phases tracking at the transaction level...
r33459 test-debug-phase: move rev 2: 0 -> 1
Kevin Bullock
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: f838bfaca5c7226600ebcfd84f3c3c13a28d3757: public -> draft
Pierre-Yves David
phases: add a phases command to display and manipulate phases
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
phases: remove experimental.nativephaseskillswitch...
r31152 move changeset forward and backward
Pierre-Yves David
phases: add a phases command to display and manipulate phases
r15830
$ hg phase --draft --force 1::4
Boris Feld
phases: test phases tracking at the transaction level...
r33459 test-debug-phase: move rev 1: 0 -> 1
test-debug-phase: move rev 4: 2 -> 1
Kevin Bullock
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: 27547f69f25460a52fff66ad004e58da7ad3fb56: public -> draft
test-hook-close-phase: a603bfb5a83e312131cebcd05353c217d4d21dde: secret -> draft
Pierre-Yves David
phases: add a phases command to display and manipulate phases
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
phase: when phase cannot be reduced, hint at --force and return 1 (BC)...
r16097 test partial failure
$ hg phase --public 7
Boris Feld
phases: test phases tracking at the transaction level...
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
phases: pass phase names to hooks instead of internal values
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
phase: when phase cannot be reduced, hint at --force and return 1 (BC)...
r16097 $ hg phase --draft '5 or 7'
Boris Feld
phases: test phases tracking at the transaction level...
r33459 test-debug-phase: move rev 5: 2 -> 1
Kevin Bullock
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: a030c6be5127abc010fcbff1851536552e6951a8: secret -> draft
Martin Geisler
phase: better error message when --force is needed...
r20093 cannot move 1 changesets to a higher phase, use --force
Patrick Mezard
phase: when phase cannot be reduced, hint at --force and return 1 (BC)...
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
phase: better error message when --force is needed...
r20093 cannot move 1 changesets to a higher phase, use --force
Patrick Mezard
phase: when phase cannot be reduced, hint at --force and return 1 (BC)...
r16097 no phases changed
[1]
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..
Pierre-Yves David
clone: do not turn hidden changeset public on publishing clone (issue3935)...
r20332
test hidden changeset are not cloned as public (issue3935)
$ cd initialrepo
(enabling evolution)
Durham Goode
obsolete: update tests to use obsolete options...
r22955 $ cat >> $HGRCPATH << EOF
> [experimental]
Boris Feld
config: use 'experimental.evolution.create-markers'...
r34867 > evolution.createmarkers=True
Pierre-Yves David
clone: do not turn hidden changeset public on publishing clone (issue3935)...
r20332 > EOF
(making a changeset hidden; H in that case)
$ hg debugobsolete `hg id --debug -r 5`
debugobsolete: also issue the "new obsmarkers" messsage...
r43163 1 new obsolescence markers
Boris Feld
debugobsolete: also report the number of obsoleted changesets...
r33542 obsoleted 1 changesets
Pierre-Yves David
clone: do not turn hidden changeset public on publishing clone (issue3935)...
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
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 4a2df7238c3b:17a481b3bccb
Boris Feld
phases: test phases tracking at the transaction level...
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
phases: pass phase names to hooks instead of internal values
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
clone: do not turn hidden changeset public on publishing clone (issue3935)...
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
verify: do not prevent verify repository containing hidden changesets...
r20530 test verify repo containing hidden changesets, which should not abort just
because repo.cancopy() is False
Pierre-Yves David
clone: do not turn hidden changeset public on publishing clone (issue3935)...
r20332
Yuya Nishihara
verify: do not prevent verify repository containing hidden changesets...
r20530 $ cd ../initialrepo
$ hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
Meirambek Omyrzak
verify: make output less confusing (issue5924)...
r39525 checked 8 changesets with 7 changes to 7 files
FUJIWARA Katsunori
phases: check HG_PENDING strictly...
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
tests: quote paths in shell script hooks...
r31767 > hg -R "$TESTTMP/initialrepo" phase 7
FUJIWARA Katsunori
phases: check HG_PENDING strictly...
r31053 > echo '@push-dest'
Matt Harbison
tests: quote paths in shell script hooks...
r31767 > hg -R "$TESTTMP/push-dest" phase 6
FUJIWARA Katsunori
phases: check HG_PENDING strictly...
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
phase: add a dedicated pretxnclose-phase hook...
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
phases: pass phase names to hooks instead of internal values
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
phase: add a dedicated pretxnclose-phase hook...
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
tests: adjust hooks for Windows...
r34939 > pretxnclose-phase.nopublish_D = sh -c "(echo \$HG_NODE| grep -v b3325c91a4d9>/dev/null) || [ 'public' != \$HG_PHASE ]"
Boris Feld
phase: add a dedicated pretxnclose-phase hook...
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
phases: pass phase names to hooks instead of internal values
r34877 test-hook-close-phase: b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e: secret -> draft
test-hook-close-phase: a603bfb5a83e312131cebcd05353c217d4d21dde: secret -> draft
test-hook-close-phase: 17a481b3bccb796c0521ae97903d81c52bfee4af: secret -> draft
Boris Feld
phase: add a dedicated pretxnclose-phase hook...
r34712 $ hg phase --public 17a481b3bccb
transaction abort!
rollback completed
abort: pretxnclose-phase.nopublish_D hook exited with status 1
[255]
Boris Feld
phases: add an internal phases...
r39333
$ cd ..
Test for the "internal" phase
=============================
Boris Feld
phases: enforce internal phase support...
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
test: enable sparse-revlog for test-phases.t...
r40937 sparserevlog
Boris Feld
phases: enforce internal phase support...
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
tests: glob 'mercurial.error' in test-phases.t...
r45772 *ProgrammingError: this repository does not support the internal phase (glob)
Boris Feld
phase: add an archived phase...
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
tests: glob 'mercurial.error' in test-phases.t...
r45772 *ProgrammingError: this repository does not support the archived phase (glob)
Boris Feld
phases: enforce internal phase support...
r39335
$ cd ..
Check it works fine with repository that supports it.
$ hg init internal-phase --config format.internal-phase=yes
Boris Feld
phases: add an internal phases...
r39333 $ cd internal-phase
Boris Feld
phases: enforce internal phase support...
r39335 $ cat .hg/requires
dotencode
fncache
generaldelta
internal-phase
revlogv1
Boris Feld
test: enable sparse-revlog for test-phases.t...
r40937 sparserevlog
Boris Feld
phases: enforce internal phase support...
r39335 store
Boris Feld
phases: add an internal phases...
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
phase: add an archived phase...
r40463 The changeset is a working parent descendant.
Per the usual visibility rules, it is made visible.
Boris Feld
phases: add an internal phases...
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
phase: add an archived phase...
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