Mercurial Conditional%包括?

时间:2011-02-11 17:17:21

标签: mercurial hgrc

我希望项目的父目录包含该文件夹中的repo继承的hgrc文件,例如

~/work/
~/work/hgrc
~/work/project1/
~/work/project2/
~/personal/hgrc
~/personal/project1
~/personal/project2
~/personal/project3

任何正在进行的项目都应该从work/hgrc继承,而任何个人都应该从personal/hgrc继承。我正在考虑向~/.hgrc添加一个脚本,克隆将在父目录中搜索任何hgrc文件,如果它们存在则会%include,但是如果我在它之后添加一个hgrc,那就太丑了我克隆它不会被包括在内。只有5%的时间考虑,但仍然......

2 个答案:

答案 0 :(得分:3)

推杆怎么样:

%include ../hgrc

在每个回购站的.hg / hgrc里面?您甚至可以自动执行此操作,但将其放入系统范围/etc/mercurial/hgrc

[hooks]
post-clone = echo '%include ../hgrc' >> .hg/hgrc

我没有测试过这个钩子。 :)

答案 1 :(得分:0)

按照@ Ry4an的建议,这是一个适合我的例子。我将其添加到我的~/.hgrc文件中,以便它可以在任何地方使用。

[hooks]
# This hook adds "%include ../.hgrc" to .hg/hgrc if the .hgrc file exists in
# the top level.  This allows one to store a set of paths for example.
# See 
update = if [ -e .hgrc ] && touch .hg/hgrc                                  \
                         && ! grep -q '%include \.\./\.hgrc' .hg/hgrc; then \
           echo '%include ../.hgrc' >> .hg/hgrc;                            \
         fi

如果文件%include ../.hgrc存在于repo的顶层,则此钩子会将.hg/hgrc行添加到.hgrc文件中。请注意,通过使用update挂钩,我们绕过了post-clone克隆挂钩的问题,必须尝试从环境变量中找出目标克隆的目录名。