sapling/eden/scm/tests/test-amend-next.t
Jun Wu 9bf6b674a6 config: use Rust graph render as default
Summary: Change the legacy Python graph render to Rust renderer.

Reviewed By: DurhamG

Differential Revision: D24317802

fbshipit-source-id: 4c3dc3a6dd02b7ebe79596a8e77f4b6b139d2e20
2020-10-19 17:07:30 -07:00

292 lines
7.3 KiB
Perl

#chg-compatible
Set up test environment.
$ configure mutation-norecord
$ enable amend rebase
$ showgraph() {
> hg log --graph -T "{bookmarks} {desc|firstline}" | sed \$d
> }
$ newrepo
Check help text for new options and removal of unsupported options.
$ hg next --help
hg next [OPTIONS]... [STEPS]
aliases: n
check out a child commit
Options:
--newest always pick the newest child when a changeset has
multiple children
--rebase rebase each changeset if necessary
--top update to the head of the current stack
--bookmark update to the first changeset with a bookmark
--no-activate-bookmark do not activate the bookmark on the destination
changeset
--towards VALUE move linearly towards the specified head
-C --clean discard uncommitted changes (no backup)
-B --move-bookmark move active bookmark
-m --merge merge uncommitted changes
-c --check require clean working directory
(some details hidden, use --verbose to show complete help)
Create stack of commits and go to the bottom.
$ hg debugbuilddag --mergeable-file +6
$ hg up 'desc(r0)'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg book bottom
$ showgraph
o r5
o r4
o r3
o r2
o r1
@ bottom r0
Test invalid argument combinations.
$ hg next --top 1
abort: cannot use both number and --top
[255]
$ hg next --bookmark 1
abort: cannot use both number and --bookmark
[255]
$ hg next --top --bookmark
abort: cannot use both --top and --bookmark
[255]
$ hg next --top --towards top
abort: cannot use both --top and --towards
[255]
Test basic usage.
$ hg next
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(leaving bookmark bottom)
[*] r1 (glob)
With positional argument.
$ hg next 2
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
[*] r3 (glob)
Overshoot top of repo.
$ hg next 5
reached head changeset
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
[*] r5 (glob)
Test --top flag.
$ hg up bottom
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(activating bookmark bottom)
$ hg next --top
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(leaving bookmark bottom)
[*] r5 (glob)
Test bookmark navigation.
$ hg book -r 'desc(r5)' top
$ hg book -r 'desc(r3)' bookmark
$ showgraph
@ top r5
o r4
o bookmark r3
o r2
o r1
o bottom r0
$ hg up bottom
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(activating bookmark bottom)
$ hg next --bookmark
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(leaving bookmark bottom)
[*] (bookmark) r3 (glob)
(activating bookmark bookmark)
$ hg next --bookmark
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(leaving bookmark bookmark)
[*] (top) r5 (glob)
(activating bookmark top)
Test bookmark activation.
$ hg up bottom
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(activating bookmark bottom)
$ hg next 3
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(leaving bookmark bottom)
[*] (bookmark) r3 (glob)
(activating bookmark bookmark)
$ hg next 2 --no-activate-bookmark
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(leaving bookmark bookmark)
[*] (top) r5 (glob)
Test dirty working copy and --clean.
$ hg up bottom
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(activating bookmark bottom)
$ touch test
$ hg add test
$ hg st
A test
$ hg next --check
abort: uncommitted changes
[255]
$ hg next --clean
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(leaving bookmark bottom)
[*] r1 (glob)
$ hg st
? test
$ rm test
Test dirty working copy and --merge.
$ hg up bottom
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(activating bookmark bottom)
$ echo test >> mf
$ hg st
M mf
$ hg next --check
abort: uncommitted changes
[255]
$ hg next --merge
merging mf
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(leaving bookmark bottom)
[*] r1 (glob)
$ hg st
M mf
$ hg up -C .
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Test --newest flag.
$ hg up 'desc(r3)'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ touch test
$ hg add test
$ hg commit -m "test"
$ hg book other
$ showgraph
@ other test
o top r5
o r4
o bookmark r3
o r2
o r1
o bottom r0
$ hg up bottom
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(activating bookmark bottom)
$ hg next --top
current stack has multiple heads, namely:
[*] (top) r5 (glob)
[*] (other) test (glob)
abort: ambiguous next changeset
(use the --newest flag to always pick the newest child at each step)
[255]
$ hg log -r .
commit: fdaccbb26270
bookmark: bottom
user: debugbuilddag
date: Thu Jan 01 00:00:00 1970 +0000
summary: r0
$ hg next --top --newest
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
(leaving bookmark bottom)
[*] (other) test (glob)
(activating bookmark other)
Test --towards flag.
$ hg up bottom
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(activating bookmark bottom)
$ showgraph
o other test
o top r5
o r4
o bookmark r3
o r2
o r1
@ bottom r0
$ hg next 4 --towards 'desc(r1)'
changeset * has multiple children, namely: (glob)
[*] r4 (glob)
[*] (other) test (glob)
abort: ambiguous next changeset
(use the --newest or --towards flags to specify which child to pick)
[255]
$ hg next 4 --towards 'top+other'
abort: 'top+other' refers to multiple changesets
[255]
$ hg next 4 --towards top
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(leaving bookmark bottom)
[*] r4 (glob)
$ hg next --towards other
abort: the current changeset is not an ancestor of 'other'
[255]
Test next prefer draft commit.
$ hg up 'desc(r3)'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ showgraph
o other test
o top r5
o r4
@ bookmark r3
o r2
o r1
o bottom r0
Here we have 2 draft children.
$ hg next
changeset * has multiple children, namely: (glob)
[*] r4 (glob)
[*] (other) test (glob)
abort: ambiguous next changeset
(use the --newest or --towards flags to specify which child to pick)
[255]
Let's make one of child commits public.
$ hg debugmakepublic top
Now we have only 1 draft child.
$ hg next
changeset * has multiple children, namely: (glob)
[*] r4 (glob)
[*] (other) test (glob)
choosing the only draft child: * (glob)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
[*] (other) test (glob)
(activating bookmark other)