使用Glob语法忽略Mercurial中的文件

时间:2010-07-22 07:36:03

标签: regex mercurial cvs glob hgignore

我正在使用Mercurial,我有以下结构:

files
   test
       demo.jpg
       video.flv
       video.doc

   sport
       demo2.jpg
       picture.jpg
       text.txt
demo3.jpg
demofile3.doc

我想创建一个全局过滤器,它只忽略所有目录中所有“jpg”文件,这些文件是“files”目录的子目录

我尝试使用文件/ * .jpg,但它不起作用。

任何建议都将受到赞赏。

3 个答案:

答案 0 :(得分:16)

Regexp解决方案


这对我有用..

syntax: regexp
files/.*/.*jpg


你自己的解决方案看起来更像是一个glob。其中的诀窍是使用**语法来允许子目录。看到这个......

Glob解决方案


这个glob也适合我

**/files/**/*.jpg


评论

就个人而言,我总是会使用glob syntx来解决这类问题。一旦你了解了**语法,就比正则表达式更容易遵循模式试图做的事情。

答案 1 :(得分:11)

如果您乐意忽略“名为files的任何目录中的所有JPG文件”,请使用

syntax: glob
files/**.jpg

请参阅hg help patterns,其中解释了**是跨越目录分隔符的glob运算符。这意味着文件

 files/test/demo.jpg

files/**.jpg匹配。

但是,请注意glob模式are not rooted。这意味着名为

的文件
 test/files/demo.jpg

也将被忽略,因为它在删除test/前缀后与模式匹配。

如果您对此有疑问,则需要使用正则表达式。在该语法中,模式读取

syntax: regex
^files/.*\.jpg

我通常不会担心根模式 - 我更喜欢glob模式的简单性。但是很高兴知道如果你真的需要你可以根据忽略模式。

答案 2 :(得分:0)

它必须是glob语法吗?如果使用正则表达式语法,files/.*\.jpg应该有效。