mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 01:07:15 +03:00
7174632e3c
Summary: This diff adds a `--towards` flag to `hg next`. This flag tells `hg next` to always proceed in a linear fashion towards the specified commit. This is useful in situations where the user has a very branchy stack. For example, if the user has a local stack with several branches, each with a feature bookmark at the top, if the user wants to go up a particular stack they can do so with something like `hg next 3 --towards bookmark`. Test Plan: Here is an example of basic usage. Also see test file. ``` $ hg debugbuilddag "+5 *2 +2" $ hg book -r 4 feature1 $ hg book -r 7 feature2 $ hg up 0 $ hg sl o 92eaf3 debugbuilddag feature2 | r7 | o 8bbe84 debugbuilddag | r6 | o 914970 debugbuilddag | r5 | | o bebd16 debugbuilddag feature1 | | r4 | | | o 2dc09a debugbuilddag | | r3 | | | o 012414 debugbuilddag |/ r2 | o 66f7d4 debugbuilddag | r1 | @ 1ea734 debugbuilddag r0 $ hg next 3 --towards feature1 0 files updated, 0 files merged, 0 files removed, 0 files unresolved [2dc09a] r3 $ hg sl o 92eaf3 debugbuilddag feature2 | r7 | o 8bbe84 debugbuilddag | r6 | o 914970 debugbuilddag | r5 | | o bebd16 debugbuilddag feature1 | | r4 | | | @ 2dc09a debugbuilddag | | r3 | | | o 012414 debugbuilddag |/ r2 | o 66f7d4 debugbuilddag | r1 | o 1ea734 debugbuilddag r0 ``` Reviewers: #mercurial, simonfar Reviewed By: simonfar Subscribers: simonfar, mjpieters Differential Revision: https://phabricator.intern.facebook.com/D4695861 Signature: t1:4695861:1489325959:1145a29ba87f99d07ede1e81415804723dc48818
248 lines
6.3 KiB
Perl
248 lines
6.3 KiB
Perl
Set up test environment.
|
|
$ . $TESTDIR/require-ext.sh directaccess evolve inhibit
|
|
$ extpath=`dirname $TESTDIR`
|
|
$ cp $extpath/hgext3rd/fbamend.py $TESTTMP # use $TESTTMP substitution in message
|
|
$ cat >> $HGRCPATH << EOF
|
|
> [extensions]
|
|
> directaccess=
|
|
> evolve=
|
|
> fbamend=$TESTTMP/fbamend.py
|
|
> inhibit=
|
|
> rebase=
|
|
> [experimental]
|
|
> evolution = createmarkers
|
|
> evolutioncommands = previous next split fold
|
|
> EOF
|
|
$ showgraph() {
|
|
> hg log --graph -T "{rev} {bookmarks} {desc|firstline}" | sed \$d
|
|
> }
|
|
$ hg init fbamendnext && cd fbamendnext
|
|
|
|
Check help text for new options and removal of unsupported options.
|
|
$ hg next --help
|
|
hg next [OPTION]... [NUM_STEPS]
|
|
|
|
update to next child revision
|
|
|
|
Use the "--evolve" flag to evolve unstable children on demand.
|
|
|
|
Displays the summary line of the destination for clarity.
|
|
|
|
options:
|
|
|
|
-B --move-bookmark move active bookmark after update
|
|
--merge bring uncommitted change along
|
|
--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
|
|
|
|
(some details hidden, use --verbose to show complete help)
|
|
|
|
Create stack of commits and go to the bottom.
|
|
$ hg debugbuilddag +6
|
|
$ hg up 1ea734
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg book bottom
|
|
$ showgraph
|
|
o 5 r5
|
|
|
|
|
o 4 r4
|
|
|
|
|
o 3 r3
|
|
|
|
|
o 2 r2
|
|
|
|
|
o 1 r1
|
|
|
|
|
@ 0 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
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
(leaving bookmark bottom)
|
|
[66f7d4] r1
|
|
|
|
With positional argument.
|
|
$ hg next 2
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
[2dc09a] r3
|
|
|
|
Overshoot top of repo.
|
|
$ hg next 5
|
|
reached head changeset
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
[c8d03c] r5
|
|
|
|
Test --top flag.
|
|
$ hg up bottom
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
(activating bookmark bottom)
|
|
$ hg next --top
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
(leaving bookmark bottom)
|
|
[c8d03c] r5
|
|
|
|
Test bookmark navigation.
|
|
$ hg book -r c8d03c top
|
|
$ hg book -r 2dc09a bookmark
|
|
$ showgraph
|
|
@ 5 top r5
|
|
|
|
|
o 4 r4
|
|
|
|
|
o 3 bookmark r3
|
|
|
|
|
o 2 r2
|
|
|
|
|
o 1 r1
|
|
|
|
|
o 0 bottom r0
|
|
$ hg up bottom
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
(activating bookmark bottom)
|
|
$ hg next --bookmark
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
(leaving bookmark bottom)
|
|
[2dc09a] (bookmark) r3
|
|
(activating bookmark bookmark)
|
|
$ hg next --bookmark
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
(leaving bookmark bookmark)
|
|
[c8d03c] (top) r5
|
|
(activating bookmark top)
|
|
|
|
Test bookmark activation.
|
|
$ hg up bottom
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
(activating bookmark bottom)
|
|
$ hg next 3
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
(leaving bookmark bottom)
|
|
[2dc09a] (bookmark) r3
|
|
(activating bookmark bookmark)
|
|
$ hg next 2 --no-activate-bookmark
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
(leaving bookmark bookmark)
|
|
[c8d03c] (top) r5
|
|
|
|
Test dirty working copy and --merge.
|
|
$ hg up bottom
|
|
0 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
|
|
abort: uncommitted changes
|
|
(use --merge to bring along uncommitted changes)
|
|
[255]
|
|
$ hg next --merge
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
(leaving bookmark bottom)
|
|
[66f7d4] r1
|
|
$ hg st
|
|
A test
|
|
$ hg forget test
|
|
|
|
Test --newest flag.
|
|
$ hg up 3
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ touch test
|
|
$ hg add test
|
|
$ hg commit -m "test"
|
|
created new head
|
|
$ hg book other
|
|
$ showgraph
|
|
@ 6 other test
|
|
|
|
|
| o 5 top r5
|
|
| |
|
|
| o 4 r4
|
|
|/
|
|
o 3 bookmark r3
|
|
|
|
|
o 2 r2
|
|
|
|
|
o 1 r1
|
|
|
|
|
o 0 bottom r0
|
|
$ hg up bottom
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
(activating bookmark bottom)
|
|
$ hg next --top
|
|
current stack has multiple heads, namely:
|
|
[c8d03c] (top) r5
|
|
[10f4a7] (other) test
|
|
abort: ambiguous next changeset
|
|
(use the --newest flag to always pick the newest child at each step)
|
|
[255]
|
|
$ hg log -r .
|
|
changeset: 0:1ea73414a91b
|
|
bookmark: bottom
|
|
user: debugbuilddag
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: r0
|
|
|
|
|
|
$ hg next --top --newest
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
(leaving bookmark bottom)
|
|
[10f4a7] (other) test
|
|
(activating bookmark other)
|
|
|
|
Test --towards flag.
|
|
$ hg up bottom
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
(activating bookmark bottom)
|
|
$ showgraph
|
|
o 6 other test
|
|
|
|
|
| o 5 top r5
|
|
| |
|
|
| o 4 r4
|
|
|/
|
|
o 3 bookmark r3
|
|
|
|
|
o 2 r2
|
|
|
|
|
o 1 r1
|
|
|
|
|
@ 0 bottom r0
|
|
$ hg next 4 --towards 1
|
|
changeset 2dc09a01254d has multiple children, namely:
|
|
[bebd16] r4
|
|
[10f4a7] (other) test
|
|
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
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
(leaving bookmark bottom)
|
|
[bebd16] r4
|
|
$ hg next --towards other
|
|
abort: the current changeset is not an ancestor of 'other'
|
|
[255]
|