.hgignore语法只忽略文件,而不是目录?

INS*_*INS 11 regex mercurial dvcs hgignore

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

我的.hgignore档案:

syntax: regexp
^[^\\/]+$
Run Code Online (Sandbox Code Playgroud)

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

例如,如果我有这样的:

.hg
+mydir1
+mydir2
-myfile1
-myfile2
-anotherfile1
-anotherfile2 
.hgignore
Run Code Online (Sandbox Code Playgroud)

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

有没有我缺少的东西,因为我很确定regexp是好的(我甚至测试过它)?想法?

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

Mar*_*ler 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在根目录中正确忽略了该文件,但x.txtfoo子目录中没有.您还可以看到不会忽略bbb在根目录中命名的文件.但也许您可以自己将这些文件添加到文件中..hgignore

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


Rom*_*giy 7

这是一个肮脏的把戏:

在目录中创建一个空文件".hidden",而不是添加到.hgignore:

^mydir/(?!\.hidden).+$
Run Code Online (Sandbox Code Playgroud)

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