2009-06-26 106 views
11

我有一個我似乎無法理解的問題。我在Windows上使用TortoiseHg(版本0.7.5),但在Linux上我有同樣的問題。那就是:.hgignore語法僅用於忽略文件而不是目錄?

.hgignore文件:

syntax: regexp 
^[^\\/]+$ 

我試圖做到的,是添加到忽略列表這是在汞庫的根目錄中的文件。

例如,如果我有這樣的:

.hg 
+mydir1 
+mydir2 
-myfile1 
-myfile2 
-anotherfile1 
-anotherfile2 
.hgignore 

我想myfile1(2)和anotherfile1(2)被忽視(名稱僅爲此示例的目的 - 他們沒有一個簡單的規則,可以很容易地放在hgignore文件中)

有什麼我失蹤,因爲我非常確定正則表達式是好的(我甚至測試過)?想法?

有沒有更簡單的方法來實現這一目標? [添加到忽略列表中的文件,在mercurial存儲庫的根目錄]

回答

11

我在#mercurial irc.freenode.net上轉達了這個問題,答覆是你無法區分文件和目錄 - 目錄是沒有在您的正則表達式中搜索的斜槓匹配。

但是,如果你可以假設你的目錄將永遠不會包含一個全站.,但您將文件,那麼這樣的事情似乎工作:

 
^[^/]*\..*$ 

我在這樣的倉庫進行了測試:

 
% hg status -ui 
? a.txt 
? bbb 
? foo/x.txt 
? foo/yyy 

添加.hgignore文件提供:

 
% hg status -ui 
? bbb 
? foo/x.txt 
? foo/yyy 
I .hgignore 
I a.txt 

這表明a.txt文件在根目錄中被正確忽略,但foo子目錄中的x.txt不是。您還可以看到根目錄中名爲bbb的文件是而不是被忽略。但是,也許你可以將這些文件自己添加到.hgignore文件中。

如果您碰巧在根目錄中有一個像bar.baz這樣的目錄,那麼該目錄及其中的所有文件將被忽略。我希望這個能有一點幫助。

+0

非常感謝,它證實了我的信念。 – INS 2009-06-30 12:50:14

7

這是一個骯髒的伎倆:

創建目錄的空文件「.hidden」,不是增加.hgignore:

^mydir/(?!\.hidden).+$ 

這將忽略目錄中的所有文件除」。隱」。