2011-02-11 48 views
3

我希望項目的父目錄包含一個hgrc文件,該文件夾中的回購文件從中繼承,例如,Mercurial Conditional%包括?

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

在工作的任何項目應該從work/hgrc繼承,任何個人應personal/hgrc繼承。我正在考慮爲~/.hgrc添加一個腳本,它將在父目錄中搜索任何hgrc文件,並在%include之間搜索它們(如果它們存在),但是這具有醜陋,如果在克隆它之後在它下面添加hgrc,它將不會包括在內。只有時間考慮的5%,但仍...

回答

3

如何把:

%include ../hgrc 

每個回購的.hg/hgrc裏面?你甚至可以做到這一點,但會自動把這個在你的系統範圍/etc/mercurial/hgrc

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

我沒有測試過鉤。 :)

+0

如果它不起作用我會調整它,但它似乎基本上是正確的,但是如果../hgrc不存在(或者對`%include`安全嗎?一個不存在的文件?)它比擁有外部腳本更好。我將暫時擱置一段時間,而不是在物理上改變hgrc文件(如果它不存在的話,它可以處理創建一個較低的hgrc),但如果我在一週內沒有聽到某些東西或者我會標記你的答案。 – Jonathan 2011-02-11 20:10:44

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.hg/hgrc文件IFF .hgrc存在於回購的頂層文件。請注意,通過使用update鉤子,我們繞過了使用post-clone克隆鉤子的問題,必須嘗試從環境變量中找出目標克隆的目錄名稱。