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

Dan*_*ric 11 regex cvs mercurial glob hgignore

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

files
   test
       demo.jpg
       video.flv
       video.doc

   sport
       demo2.jpg
       picture.jpg
       text.txt
demo3.jpg
demofile3.doc
Run Code Online (Sandbox Code Playgroud)

我想创建一个glob过滤器,它只忽略所有目录中作为"files"目录子项的所有"jpg"文件

我尝试使用files/*.jpg,但它不起作用.

任何意见,将不胜感激.

Chr*_*ley 16

Regexp解决方案


这对我有用..

syntax: regexp
files/.*/.*jpg
Run Code Online (Sandbox Code Playgroud)


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

全球解决方案


这个glob也适合我

**/files/**/*.jpg
Run Code Online (Sandbox Code Playgroud)


评论

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


Mar*_*ler 12

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

syntax: glob
files/**.jpg
Run Code Online (Sandbox Code Playgroud)

查看hg help patterns哪个解释**是跨越目录分隔符的glob运算符.这意味着该文件

 files/test/demo.jpg
Run Code Online (Sandbox Code Playgroud)

匹配files/**.jpg.

但是,请注意glob模式没有根深蒂固.这意味着一个名为的文件

 test/files/demo.jpg
Run Code Online (Sandbox Code Playgroud)

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

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

syntax: regex
^files/.*\.jpg
Run Code Online (Sandbox Code Playgroud)

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