如何hg忽略没有扩展名的文件名?

时间:2013-05-13 07:55:18

标签: mercurial hgignore

Mercurial 可以配置为忽略文件名具有特定扩展名的文件。例如,可以通过将*.txt添加到~/.hgignore来忽略syntax: glob *.txt 个文件。

foobar

如何设置.hgignore文件以忽略文件名无扩展名的文件?例如,应忽略名为abracadabrafoobar.cpp的文件,但应跟踪abracadabra.c和{{1}}。

2 个答案:

答案 0 :(得分:8)

请使用regexp语法,因为glob无法使用<{1}}:

syntax: regexp
^[^.]+$

PS:您可以在syntax: glob部分

之后立即添加

答案 1 :(得分:3)

如果您有一小部分没有扩展名的文件要忽略,那么您只需将它们列为glob模式:

syntax: glob
foobar
abracadabra

如果你想忽略没有扩展名的所有文件,那么事情会变得更加困难。如果您使用zerkms提供的正则表达式,

syntax: regexp
^[^.]+$

然后你也会忽略没有“扩展名”的目录,即名称中没有.的目录,例如src,等等。

因为Mercurial在遍历您的工作副本时自上而下匹配文件和目录,并且因为它与.hgignore文件中的模式匹配时不区分文件和目录,所以不能包含目录,同时忽略具有相同名称的文件。

(您可以模拟相反的情况:通过忽略regexp语法中的foobar/,您最终会忽略foobar/内的所有文件,而不会忽略另一个目录中名为foobar的文件。)