11

我有一个我似乎无法理解的问题。我在 Windows 上使用 TortoiseHg(版本 0.7.5),但在 Linux 上我有同样的问题。这里是:

我的.hgignore文件:

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

我想要实现的是将 hg 存储库根目录中的文件添加到忽略列表中。

例如,如果我有这样的:

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

我希望 myfile1(2) 和 anotherfile1(2) 被忽略(名称仅用于本示例的目的 - 它们没有可以轻松放入 hgignore 文件的简单规则)

有什么我错过的,因为我很确定正则表达式是好的(我什至测试过)?想法?

有没有更简单的方法来实现这一点?[添加到 mercurial 存储库根目录中的忽略列表文件]

4

2 回答 2

11

我在 irc.freenode.net 上转发了这个问题,#mercurial得到的答复是您无法区分文件和目录——目录匹配时没有您在正则表达式中搜索的斜线。

但是,如果您可以假设您的目录永远不会包含句号.,但您的文件会包含,那么这样的事情似乎有效:

^[^/]*\..*$

我在这样的存储库中对其进行了测试:

%汞状态-ui
? 一个.txt
? bbb
? foo/x.txt
? 富/年

添加.hgignore文件给出:

%汞状态-ui
? bbb
? foo/x.txt
? 富/年
我.hgignore
我一个.txt

这表明该a.txt文件在您的根目录中被正确忽略,但x.txtfoo子目录中没有。您还可以看到,仅bbb在根目录中命名的文件没有被忽略。但也许您可以自己将此类文件添加到.hgignore文件中。

如果你碰巧bar.baz在你的根目录中有一个目录,那么这个目录和其中的所有文件都将被忽略。我希望这个能有一点帮助。

于 2009-06-30T11:47:50.100 回答
7

这是一个肮脏的把戏:

在您的目录中创建一个空文件“.hidden”,然后添加到 .hgignore:

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

这将忽略目录中除“.hidden”之外的所有文件。

于 2009-11-16T14:11:55.057 回答