phases: ``{phase}`` template keyword display the phase name
``{phaseidx}`` is providing the phase index as integer. This integer
representation is useful when people need to use the fact that phase are
ordered.
Test keep using the number version for readability purpose.
$ alias 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
$ 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 pull -q . # XXX use the dedicated phase command once available
$ 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=2
$ 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 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
$ 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 ..
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