2010-11-19 50 views
4

通過搜索,我發現如何讓Mercurial忽略位於存儲庫目錄的根目錄中的某些目錄(以及它們包含的文件/目錄),但我無法工作了解如何將其擴展到目錄,這些目錄是中的幾個級別。讓Mercurial忽略除某些子目錄之外的所有內容

在這種情況下,我只希望版本控制以下目錄:

app/design/frontend/rc 
skin/frontend/rc 

其結果是,我的.hgignore文件看起來像這樣。

syntax=regexp 
^(?!(app(/|$))|(skin(/|$))) 
^app/code 
^app/design/adminhtml 
^app/design/frontend/base 
^app/design/frontend/default 
^app/design/install 
^app/etc 
^app/locale 
^app/Mage.php 
^app/.htaccess 
^skin/adminhtml 
^skin/frontend/base 
^skin/frontend/default 
^skin/install 

我敢肯定有這樣做,不涉及應用程序和皮膚中挑選出的其他目錄的一個更好的方法,並作爲我可能會想爲我想了幾個項目做我會在這裏問。謝謝。

+0

指甲有正確的答案。不要在正則表達式語法中使用否定斷言,只需忽略「。*」,然後手動「添加」您想要跟蹤的文件。添加覆蓋'.hgignore',所以一旦你添加它們就好像你在正則表達式中製作了一個不可讀的異常。 – 2010-11-19 14:51:10

+0

早些時候,當我對負面斷言進行抨擊時,感覺就像我非常接近,但它不適用於嵌套目錄。如果我能找到如何做的話,那麼每次添加新文件時都會手動添加所需的目錄/文件。 – 2010-11-19 15:15:37

+0

在更新我的答案時,我注意到了.hgignore中的一個錯字。它應該是'syntax:regexp',而不是'syntax = regexp'。 – 2010-11-19 15:27:42

回答

3

手動將您想要的目錄添加到您的存儲庫,然後忽略其他所有內容。

hg init 
hg add app/design/frontend/rc 
hg add skin/frontend/rc 

然後在您的.hgignore:

syntax: glob 

** 
+0

感謝您的回答。據我瞭解,這意味着每次添加新文件時都必須手動添加這些目錄/文件,這就是爲什麼我仍然希望能夠得到否定斷言的工作原因。 – 2010-11-19 15:01:18

+0

@David Oliver他並不意味着將它們添加到忽略文件,他意味着將它們添加到提交中的回購。 Mercurial不會自動開始跟蹤目錄中的每個文件。它知道它在那裏,但不知道該如何處理它。 – msarchet 2010-11-19 15:27:57

+1

@msarchet:謝謝,但我意識到這一點。我試圖避免必須明確告訴Mercurial在我想要版本控制的目錄中添加新文件。 – 2010-11-19 15:36:57

相關問題