2009-06-26 105 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).+$ 

这将忽略目录中的所有文件除”。隐”。