mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +03:00
b8ca876ee0
Summary: We've been seeing issues where repositories end up with incorrect dynamic configuration since there's a window of time after they're cloned where they don't have %include /etc/mercurial/.../repo.rc and therefore generate an incorrect dynamicconfig which gets used for 15 minutes until we regen the dynamicconfig. Let's change hg clone to write the %include as part of the initial hgrc, so we remove that window of time and the repo will always be correctly configured. Reviewed By: quark-zju Differential Revision: D27093772 fbshipit-source-id: a9ca0ec54e06549546d532d1c49a80d49981decf
73 lines
2.1 KiB
Perl
73 lines
2.1 KiB
Perl
#chg-compatible
|
|
|
|
$ configure dummyssh
|
|
$ hg init repo
|
|
$ cd repo
|
|
|
|
Empty
|
|
$ hg log --configfile | head -1
|
|
hg log: option --configfile requires argument
|
|
(use 'hg log -h' to get help)
|
|
|
|
Simple file
|
|
$ cat >> $TESTTMP/simple.rc <<EOF
|
|
> [mysection]
|
|
> myname = myvalue
|
|
> EOF
|
|
$ hg config --configfile $TESTTMP/simple.rc mysection
|
|
mysection.myname=myvalue
|
|
|
|
RC file that includes another
|
|
$ cat >> $TESTTMP/include.rc <<EOF
|
|
> [includesection]
|
|
> includename = includevalue
|
|
> EOF
|
|
$ cat >> $TESTTMP/simple.rc <<EOF
|
|
> %include $TESTTMP/include.rc
|
|
> EOF
|
|
$ hg config --configfile $TESTTMP/simple.rc includesection
|
|
includesection.includename=includevalue
|
|
|
|
Order matters
|
|
$ cat >> $TESTTMP/other.rc <<EOF
|
|
> [mysection]
|
|
> myname = othervalue
|
|
> EOF
|
|
$ hg config --configfile $TESTTMP/other.rc --configfile $TESTTMP/simple.rc mysection
|
|
mysection.myname=myvalue
|
|
$ hg config --configfile $TESTTMP/simple.rc --configfile $TESTTMP/other.rc mysection
|
|
mysection.myname=othervalue
|
|
|
|
Order relative to --config
|
|
$ hg config --configfile $TESTTMP/simple.rc --config mysection.myname=manualvalue mysection
|
|
mysection.myname=manualvalue
|
|
|
|
Attribution works
|
|
$ hg config --configfile $TESTTMP/simple.rc mysection --debug
|
|
$TESTTMP/simple.rc: mysection.myname=myvalue
|
|
|
|
Cloning adds --configfile values to .hg/hgrc
|
|
$ cd ..
|
|
$ hg clone ssh://user@dummy/repo repo2 --configfile $TESTTMP/simple.rc --configfile $TESTTMP/other.rc
|
|
no changes found
|
|
updating to branch default
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ cat repo2/.hg/hgrc
|
|
# example repository config (see 'hg help config' for more info)
|
|
[paths]
|
|
default = ssh://user@dummy/repo
|
|
|
|
# path aliases to other clones of this repo in URLs or filesystem paths
|
|
# (see 'hg help config.paths' for more info)
|
|
#
|
|
# default:pushurl = ssh://jdoe@example.net/hg/jdoes-fork
|
|
# my-fork = ssh://jdoe@example.net/hg/jdoes-fork
|
|
# my-clone = /home/jdoe/jdoes-clone
|
|
|
|
[ui]
|
|
# name and email (local to this repository, optional), e.g.
|
|
# username = Jane Doe <jdoe@example.com>
|
|
|
|
%include $TESTTMP/simple.rc
|
|
%include $TESTTMP/other.rc
|