【问题标题】:Ignore files in Mercurial using Glob syntax使用 Glob 语法忽略 Mercurial 中的文件
【发布时间】:2010-07-22 07:36:03
【问题描述】:

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

files
   test
       demo.jpg
       video.flv
       video.doc

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

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

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

任何建议将不胜感激。

【问题讨论】:

    标签: regex mercurial cvs glob hgignore


    【解决方案1】:

    正则表达式解决方案


    这对我有用..

    syntax: regexp
    files/.*/.*jpg
    


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

    全局解决方案


    这个球也适合我

    **/files/**/*.jpg
    


    评论

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

    【讨论】:

    • 感谢重播,但我还有一件事。当我使用正则表达式时,它会忽略其他目录中开始或名称中有单词文件的文件。但我希望该正则表达式仅匹配文件夹文件。我该怎么做?
    • @Danillo。我会看看并尽快回复你。
    • @Daniilo,我试过重现你的场景,但它似乎对我有用...... touch files/test/demo.jpg touch anfiles/test/files.doc >hg stat ? anfiles/test/files.doc
    【解决方案2】:

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

    syntax: glob
    files/**.jpg
    

    参见hg help patterns,它解释了** 是一个跨越目录分隔符的全局运算符。这意味着该文件

     files/test/demo.jpg
    

    files/**.jpg匹配。

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

    的文件
     test/files/demo.jpg
    

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

    如果您对此感到担忧,则需要使用正则表达式。在该语法中,模式读取

    syntax: regex
    ^files/.*\.jpg
    

    我通常不会担心模式的生根问题——我更喜欢 glob 模式的简单性。但是很高兴知道如果您真的需要,您可以根植忽略模式。

    【讨论】:

      【解决方案3】:

      必须是全局语法吗?如果您使用正则表达式语法,files/.*\.jpg 应该可以工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多