allowunstable: add allowunstable extension
Summary: Currently, the reason we can't perform operations such as histedit, split, and fold in the middle of a stack is that we do not have the experimental.evolution=allowunstable option enabled. It turns out all of these commands will do the "right thing" if this option is enabled. However, since we are uncertain of the ramifications of enabling this option globally, this new extension turns the option on for the duration of split, fold, and histedit, allowing those commands to be used in the middle of a stack without config changes.
Test Plan: See unit tests. Basically, create a stack and then attempt to use split, fold, or histedit somewhere in the middle.
Reviewers: #mercurial, durham
Reviewed By: durham
Subscribers: mjpieters, #sourcecontrol
Differential Revision: https://phabricator.intern.facebook.com/D4209315
Tasks: 14598405
Signature: t1:4209315:1479744780:811e8bef02149a055376c0f105ac2d389dd60970
2016-11-28 21:43:34 +03:00
|
|
|
Set up test environment.
|
|
|
|
$ . $TESTDIR/require-ext.sh directaccess evolve inhibit
|
|
|
|
$ extpath=`dirname $TESTDIR`
|
|
|
|
$ cp $extpath/hgext3rd/allowunstable.py $TESTTMP # use $TESTTMP substitution in message
|
|
|
|
$ cat >> $HGRCPATH << EOF
|
|
|
|
> [extensions]
|
|
|
|
> allowunstable=$TESTTMP/allowunstable.py
|
|
|
|
> directaccess=
|
|
|
|
> evolve=
|
|
|
|
> histedit=
|
|
|
|
> inhibit=
|
2016-12-07 04:56:17 +03:00
|
|
|
> rebase=
|
2017-01-26 21:24:16 +03:00
|
|
|
> record=
|
allowunstable: add allowunstable extension
Summary: Currently, the reason we can't perform operations such as histedit, split, and fold in the middle of a stack is that we do not have the experimental.evolution=allowunstable option enabled. It turns out all of these commands will do the "right thing" if this option is enabled. However, since we are uncertain of the ramifications of enabling this option globally, this new extension turns the option on for the duration of split, fold, and histedit, allowing those commands to be used in the middle of a stack without config changes.
Test Plan: See unit tests. Basically, create a stack and then attempt to use split, fold, or histedit somewhere in the middle.
Reviewers: #mercurial, durham
Reviewed By: durham
Subscribers: mjpieters, #sourcecontrol
Differential Revision: https://phabricator.intern.facebook.com/D4209315
Tasks: 14598405
Signature: t1:4209315:1479744780:811e8bef02149a055376c0f105ac2d389dd60970
2016-11-28 21:43:34 +03:00
|
|
|
> [experimental]
|
|
|
|
> evolution = createmarkers
|
|
|
|
> evolutioncommands = fold split
|
2017-01-26 21:24:16 +03:00
|
|
|
> [ui]
|
|
|
|
> interactive = true
|
allowunstable: add allowunstable extension
Summary: Currently, the reason we can't perform operations such as histedit, split, and fold in the middle of a stack is that we do not have the experimental.evolution=allowunstable option enabled. It turns out all of these commands will do the "right thing" if this option is enabled. However, since we are uncertain of the ramifications of enabling this option globally, this new extension turns the option on for the duration of split, fold, and histedit, allowing those commands to be used in the middle of a stack without config changes.
Test Plan: See unit tests. Basically, create a stack and then attempt to use split, fold, or histedit somewhere in the middle.
Reviewers: #mercurial, durham
Reviewed By: durham
Subscribers: mjpieters, #sourcecontrol
Differential Revision: https://phabricator.intern.facebook.com/D4209315
Tasks: 14598405
Signature: t1:4209315:1479744780:811e8bef02149a055376c0f105ac2d389dd60970
2016-11-28 21:43:34 +03:00
|
|
|
> EOF
|
|
|
|
$ showgraph() {
|
2017-01-26 21:24:16 +03:00
|
|
|
> hg log -r '(::.)::' --graph -T "{rev} {desc|firstline}" | sed \$d
|
|
|
|
> }
|
|
|
|
$ reset() {
|
|
|
|
> cd ..
|
|
|
|
> rm -rf allowunstable
|
|
|
|
> hg init allowunstable
|
|
|
|
> cd allowunstable
|
allowunstable: add allowunstable extension
Summary: Currently, the reason we can't perform operations such as histedit, split, and fold in the middle of a stack is that we do not have the experimental.evolution=allowunstable option enabled. It turns out all of these commands will do the "right thing" if this option is enabled. However, since we are uncertain of the ramifications of enabling this option globally, this new extension turns the option on for the duration of split, fold, and histedit, allowing those commands to be used in the middle of a stack without config changes.
Test Plan: See unit tests. Basically, create a stack and then attempt to use split, fold, or histedit somewhere in the middle.
Reviewers: #mercurial, durham
Reviewed By: durham
Subscribers: mjpieters, #sourcecontrol
Differential Revision: https://phabricator.intern.facebook.com/D4209315
Tasks: 14598405
Signature: t1:4209315:1479744780:811e8bef02149a055376c0f105ac2d389dd60970
2016-11-28 21:43:34 +03:00
|
|
|
> }
|
|
|
|
$ hg init allowunstable && cd allowunstable
|
2016-12-07 04:56:17 +03:00
|
|
|
$ hg debugbuilddag +5
|
allowunstable: add allowunstable extension
Summary: Currently, the reason we can't perform operations such as histedit, split, and fold in the middle of a stack is that we do not have the experimental.evolution=allowunstable option enabled. It turns out all of these commands will do the "right thing" if this option is enabled. However, since we are uncertain of the ramifications of enabling this option globally, this new extension turns the option on for the duration of split, fold, and histedit, allowing those commands to be used in the middle of a stack without config changes.
Test Plan: See unit tests. Basically, create a stack and then attempt to use split, fold, or histedit somewhere in the middle.
Reviewers: #mercurial, durham
Reviewed By: durham
Subscribers: mjpieters, #sourcecontrol
Differential Revision: https://phabricator.intern.facebook.com/D4209315
Tasks: 14598405
Signature: t1:4209315:1479744780:811e8bef02149a055376c0f105ac2d389dd60970
2016-11-28 21:43:34 +03:00
|
|
|
|
|
|
|
Test that we can perform a splits and histedits in the middle of a stack.
|
|
|
|
Since these are interactive commands, just ensure that we don't get
|
|
|
|
an error message.
|
|
|
|
$ hg up 2
|
|
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ hg split
|
|
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ hg histedit
|
|
|
|
|
|
|
|
Test that we can perform a fold in the middle of a stack.
|
|
|
|
$ hg up 2
|
|
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
2017-01-20 17:23:56 +03:00
|
|
|
$ hg fold --from ".^"
|
allowunstable: add allowunstable extension
Summary: Currently, the reason we can't perform operations such as histedit, split, and fold in the middle of a stack is that we do not have the experimental.evolution=allowunstable option enabled. It turns out all of these commands will do the "right thing" if this option is enabled. However, since we are uncertain of the ramifications of enabling this option globally, this new extension turns the option on for the duration of split, fold, and histedit, allowing those commands to be used in the middle of a stack without config changes.
Test Plan: See unit tests. Basically, create a stack and then attempt to use split, fold, or histedit somewhere in the middle.
Reviewers: #mercurial, durham
Reviewed By: durham
Subscribers: mjpieters, #sourcecontrol
Differential Revision: https://phabricator.intern.facebook.com/D4209315
Tasks: 14598405
Signature: t1:4209315:1479744780:811e8bef02149a055376c0f105ac2d389dd60970
2016-11-28 21:43:34 +03:00
|
|
|
2 changesets folded
|
|
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ showgraph
|
2016-12-07 04:56:17 +03:00
|
|
|
@ 5 r1
|
allowunstable: add allowunstable extension
Summary: Currently, the reason we can't perform operations such as histedit, split, and fold in the middle of a stack is that we do not have the experimental.evolution=allowunstable option enabled. It turns out all of these commands will do the "right thing" if this option is enabled. However, since we are uncertain of the ramifications of enabling this option globally, this new extension turns the option on for the duration of split, fold, and histedit, allowing those commands to be used in the middle of a stack without config changes.
Test Plan: See unit tests. Basically, create a stack and then attempt to use split, fold, or histedit somewhere in the middle.
Reviewers: #mercurial, durham
Reviewed By: durham
Subscribers: mjpieters, #sourcecontrol
Differential Revision: https://phabricator.intern.facebook.com/D4209315
Tasks: 14598405
Signature: t1:4209315:1479744780:811e8bef02149a055376c0f105ac2d389dd60970
2016-11-28 21:43:34 +03:00
|
|
|
|
|
2016-12-07 04:56:17 +03:00
|
|
|
| o 4 r4
|
|
|
|
| |
|
allowunstable: add allowunstable extension
Summary: Currently, the reason we can't perform operations such as histedit, split, and fold in the middle of a stack is that we do not have the experimental.evolution=allowunstable option enabled. It turns out all of these commands will do the "right thing" if this option is enabled. However, since we are uncertain of the ramifications of enabling this option globally, this new extension turns the option on for the duration of split, fold, and histedit, allowing those commands to be used in the middle of a stack without config changes.
Test Plan: See unit tests. Basically, create a stack and then attempt to use split, fold, or histedit somewhere in the middle.
Reviewers: #mercurial, durham
Reviewed By: durham
Subscribers: mjpieters, #sourcecontrol
Differential Revision: https://phabricator.intern.facebook.com/D4209315
Tasks: 14598405
Signature: t1:4209315:1479744780:811e8bef02149a055376c0f105ac2d389dd60970
2016-11-28 21:43:34 +03:00
|
|
|
| o 3 r3
|
|
|
|
| |
|
|
|
|
| o 2 r2
|
|
|
|
| |
|
|
|
|
| o 1 r1
|
|
|
|
|/
|
|
|
|
o 0 r0
|
2017-01-26 21:24:16 +03:00
|
|
|
|
2016-12-07 04:56:17 +03:00
|
|
|
Test that we can perform a rebase in the middle of a stack.
|
|
|
|
$ hg rebase -r 3 -d 5
|
|
|
|
rebasing 3:2dc09a01254d "r3"
|
|
|
|
note: rebase of 3:2dc09a01254d created no changes to commit
|
|
|
|
1 new unstable changesets
|
|
|
|
$ showgraph
|
|
|
|
@ 5 r1
|
|
|
|
|
|
|
|
|
| o 4 r4
|
|
|
|
| |
|
|
|
|
| x 3 r3
|
|
|
|
| |
|
|
|
|
| o 2 r2
|
|
|
|
| |
|
|
|
|
| o 1 r1
|
|
|
|
|/
|
|
|
|
o 0 r0
|
2017-01-26 21:24:16 +03:00
|
|
|
|
|
|
|
Test that we can perform `hg record --amend` in the middle of a stack.
|
|
|
|
$ reset
|
|
|
|
$ hg debugbuilddag +3
|
|
|
|
$ hg up 1
|
|
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ touch foo
|
|
|
|
$ hg add foo
|
|
|
|
$ hg record --amend << EOF
|
|
|
|
> y
|
|
|
|
> EOF
|
|
|
|
diff --git a/foo b/foo
|
|
|
|
new file mode 100644
|
|
|
|
examine changes to 'foo'? [Ynesfdaq?] y
|
2016-12-07 04:56:17 +03:00
|
|
|
|
2017-01-26 21:24:16 +03:00
|
|
|
$ showgraph
|
|
|
|
@ 4 r1
|
|
|
|
|
|
|
|
|
| o 2 r2
|
|
|
|
| |
|
|
|
|
| o 1 r1
|
|
|
|
|/
|
|
|
|
o 0 r0
|