split: take file patterns to limit selection on matching file patterns
When splitting a big changeset, the user often wants to extract specific files
from the changeset while leaving the others files intact.
The split command can now be called with multiple file patterns. Only files
that match one of the patterns will be shown in the interactive selection. The
user will be able to create one or more commits with those files.
When the user finishes splitting the matching files, a last commit will be
made with the remaining of the files.
$ cat >> $HGRCPATH <<EOF
> [defaults]
> amend=-d "0 0"
> [extensions]
> EOF
$ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
$ echo "topic=$(echo $(dirname $TESTDIR))/hgext3rd/topic/" >> $HGRCPATH
$ template='{rev}:{node|short}@{branch}({separate("/", obsolete, phase)}) {desc|firstline}\n'
$ glog() {
> hg log -G --template "$template" "$@"
> }
Test outgoing, common A is suspended, B unstable and C secret, remote
has A and B, neither A or C should be in outgoing.
$ hg init source
$ cd source
$ echo a > a
$ hg ci -qAm A a
$ echo b > b
$ hg ci -qAm B b
$ hg up 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo c > c
$ hg ci -qAm C c
$ hg phase --secret --force .
$ hg prune 0 1
2 changesets pruned
1 new orphan changesets
$ glog --hidden
@ 2:244232c2222a@default(secret) C
|
| x 1:6c81ed0049f8@default(obsolete/draft) B
|/
x 0:1994f17a630e@default(obsolete/draft) A
$ hg init ../clone
$ cat > ../clone/.hg/hgrc <<EOF
> [phases]
> publish = false
> EOF
$ hg outgoing ../clone --template "$template"
comparing with ../clone
searching for changes
0:1994f17a630e@default(obsolete/draft) A
$ cd ..
Test options to prevent implicite publishing of changesets
----------------------------------------------------------
$ hg clone source strict-publish-client --pull
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
2 new obsolescence markers
new changesets 1994f17a630e
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd strict-publish-client
$ echo c > c
$ hg ci -qAm C c
abort behavior
$ cat >> .hg/hgrc <<eof
> [experimental]
> auto-publish = abort
> eof
$ hg push -r .
pushing to $TESTTMP/source
abort: push would publish 1 changesets
(* 'experimental.auto-publish' config) (glob)
[255]
$ hg push
pushing to $TESTTMP/source
abort: push would publish 1 changesets
(* 'experimental.auto-publish' config) (glob)
[255]
warning behavior
$ echo 'auto-publish = warn' >> .hg/hgrc
$ hg push
pushing to $TESTTMP/source
1 changesets about to be published
searching for changes
adding changesets
adding manifests
adding file changes
added 0 changesets with 0 changes to 1 files
--publish overrides auto-publish
$ echo d > d
$ hg ci -qAm D d
$ hg push -r . --publish --config experimental.auto-publish=abort
pushing to $TESTTMP/source
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files