【问题标题】:Mercurial/.hgignore - How do I ignore everything but the contents of a folder?Mercurial/.hgignore - 我如何忽略除文件夹内容之外的所有内容?
【发布时间】:2010-03-31 20:31:01
【问题描述】:

我有一个 NetBeans 项目,而 Mercurial 存储库位于项目根目录中。我希望它忽略除“src”和“test”文件夹的内容以及 .hgignore 本身之外的所有内容。

我不熟悉正则表达式,也想不出一个能做到这一点的表达式。

我试过的那些:

(?!src/.*)

(?!test/.*)

(?!^.hgignore)

(?!src/.|test/.|.hgignore)

这些似乎忽略了一切,我不知道为什么。

任何建议都会很棒。

【问题讨论】:

    标签: regex file directory mercurial hgignore


    【解决方案1】:

    这似乎有效:

    语法:正则表达式
    
    ^(?!src|测试|\.hgignore)
    

    这基本上是你的最后一次尝试,但是:

    • 它以^开头的字符串为根,并且
    • 目录名称不需要尾部斜杠。

    第二点很重要,因为正如the manual 所说:

    例如,假设我们在存储库中的 a/b/file.c 中有一个未跟踪的文件 file.c。如果 .hgignore 中的任何模式匹配 a/b/file.c、a/b 或 a,Mercurial 将忽略 file.c。

    所以你的模式必须匹配src

    【讨论】:

    • 不要忘记转义点。
    • 好收获;解决了这个问题。谢谢!
    • 非常感谢,伙计们!这真的很有帮助,它现在就像一个魅力,我知道我哪里出错了。
    【解决方案2】:
    ^(?!src\b|test\b|\.hgignore$).*$
    

    应该可以。它匹配任何不以单词srctest 开头或完全由.hgignore 组成的字符串。

    它使用单词边界锚\b 来确保不会意外匹配testtube.txtsrcontrol.txt 之类的文件。但是,它会在像src.txt 这样的文件上“失火”,其中除了斜线之前还有单词边界。

    【讨论】:

    • 如何改变它以便只忽略某些子目录?例如应用程序/设计/前端/rc
    猜你喜欢
    • 2018-09-17
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 2011-10-23
    • 2015-05-02
    • 1970-01-01
    相关资源
    最近更新 更多