我有一个我似乎无法理解的问题。我在Windows上使用TortoiseHg(版本0.7.5)但在Linux上我遇到了同样的问题。这是:
我的.hgignore
文件:
syntax: regexp
^[^\\/]+$
我想要实现的是将忽略列表中的文件添加到hg存储库的根目录中。
例如,如果我有这样的话:
.hg
+mydir1
+mydir2
-myfile1
-myfile2
-anotherfile1
-anotherfile2
.hgignore
我希望忽略myfile1(2)和anotherfile1(2)(名称仅用于此示例的目的 - 它们没有可以轻松放入hgignore文件的简单规则)
是否有一些我缺少的东西,因为我很确定regexp是好的(我甚至测试过它)?想法?
有没有更简单的方法来实现这一目标? [添加到mercurial存储库根目录中的忽略列表文件]
答案 0 :(得分:11)
我在irc.freenode.net上的#mercurial
中转发了这个问题,回复是您无法区分文件和目录 - 目录是匹配的,没有您在正则表达式中搜索的斜杠。< / p>
但是,如果你可以假设你的目录永远不会包含一个句号.
,但你的文件会,那么这样的东西似乎有效:
^[^/]*\..*$
我在像这样的存储库中测试过它:
% 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
文件,但x.txt
子目录中的foo
未正确。您还可以看到根目录中名为bbb
的文件不被忽略。但也许您可以自己将这些文件添加到.hgignore
文件中。
如果您的根目录中恰好有bar.baz
这样的目录,那么此目录及其中的所有文件都将被忽略。我希望这有点帮助。
答案 1 :(得分:7)
这是一个肮脏的伎俩:
在目录中创建一个空文件“.hidden”,而不是添加到.hgignore:
^mydir/(?!\.hidden).+$
这将忽略目录中除“.hidden”之外的所有文件。