mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 01:07:15 +03:00
fa1c4e5ebe
Many tests didn't change back from subdirectories at the end of the tests ... and they don't have to. The missing 'cd ..' could always be added when another test case is added to the test file. This change do that tests (99.5%) consistently end up in $TESTDIR where they started, thus making it simpler to extend them or move them around.
480 lines
9.1 KiB
Raku
480 lines
9.1 KiB
Raku
$ hglog() { hg log --template "{rev} {phaseidx} {desc}\n" $*; }
|
|
$ mkcommit() {
|
|
> echo "$1" > "$1"
|
|
> hg add "$1"
|
|
> message="$1"
|
|
> shift
|
|
> hg ci -m "$message" $*
|
|
> }
|
|
|
|
$ hg init initialrepo
|
|
$ cd initialrepo
|
|
|
|
Cannot change null revision phase
|
|
|
|
$ hg phase --force --secret null
|
|
abort: cannot change null revision phase
|
|
[255]
|
|
$ hg phase null
|
|
-1: public
|
|
|
|
$ mkcommit A
|
|
|
|
New commit are draft by default
|
|
|
|
$ hglog
|
|
0 1 A
|
|
|
|
Following commit are draft too
|
|
|
|
$ mkcommit B
|
|
|
|
$ hglog
|
|
1 1 B
|
|
0 1 A
|
|
|
|
Draft commit are properly created over public one:
|
|
|
|
$ hg phase --public .
|
|
$ hglog
|
|
1 0 B
|
|
0 0 A
|
|
|
|
$ mkcommit C
|
|
$ mkcommit D
|
|
|
|
$ hglog
|
|
3 1 D
|
|
2 1 C
|
|
1 0 B
|
|
0 0 A
|
|
|
|
Test creating changeset as secret
|
|
|
|
$ mkcommit E --config phases.new-commit='secret'
|
|
$ 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)
|
|
$ 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
|
|
|
|
Test secret changeset are not pushed
|
|
|
|
$ hg init ../push-dest
|
|
$ cat > ../push-dest/.hg/hgrc << EOF
|
|
> [phases]
|
|
> publish=False
|
|
> EOF
|
|
$ 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'
|
|
$ hg outgoing -r default ../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'
|
|
|
|
$ 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
|
|
6 1 B'
|
|
5 2 H
|
|
4 2 E
|
|
3 1 D
|
|
2 1 C
|
|
1 0 B
|
|
0 0 A
|
|
$ cd ../push-dest
|
|
$ hglog
|
|
4 1 B'
|
|
3 1 D
|
|
2 1 C
|
|
1 0 B
|
|
0 0 A
|
|
|
|
(Issue3303)
|
|
Check that remote secret changeset are ignore when checking creation of remote heads
|
|
|
|
We add a secret head into the push destination. This secreat head shadow a
|
|
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
|
|
|
|
# We now try to push a new public changeset that descend from the common public
|
|
# head shadowed by the remote secret head.
|
|
|
|
$ 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
|
|
|
|
|
|
Restore condition prior extra insertion.
|
|
$ hg -q --config extensions.mq= strip .
|
|
$ hg up -q 7
|
|
$ 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
|
|
$ cd ..
|
|
|
|
But secret can still be bundled explicitly
|
|
|
|
$ cd initialrepo
|
|
$ hg bundle --base '4^' -r 'children(4)' ../secret-bundle.hg
|
|
4 changesets found
|
|
$ cd ..
|
|
|
|
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
|
|
|
|
Test revset
|
|
|
|
$ cd initialrepo
|
|
$ hglog -r 'public()'
|
|
0 0 A
|
|
1 0 B
|
|
$ hglog -r 'draft()'
|
|
2 1 C
|
|
3 1 D
|
|
6 1 B'
|
|
$ hglog -r 'secret()'
|
|
4 2 E
|
|
5 2 H
|
|
7 2 merge B' and E
|
|
|
|
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
|
|
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
|
|
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
|
|
|
|
|
|
|
|
Test phase command
|
|
===================
|
|
|
|
initial picture
|
|
|
|
$ cat >> $HGRCPATH << EOF
|
|
> [extensions]
|
|
> hgext.graphlog=
|
|
> EOF
|
|
$ 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
|
|
|
|
|
|
move changeset forward and backward
|
|
|
|
$ 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
|
|
|
|
test partial failure
|
|
|
|
$ hg phase --public 7
|
|
$ hg phase --draft '5 or 7'
|
|
cannot move 1 changesets to a more permissive phase, use --force
|
|
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
|
|
cannot move 1 changesets to a more permissive phase, use --force
|
|
no phases changed
|
|
[1]
|
|
|
|
$ cd ..
|