【问题标题】:Ignoring everything but a subfolder in Mercurial忽略 Mercurial 中的子文件夹以外的所有内容
【发布时间】:2010-03-01 12:53:29
【问题描述】:

我想忽略所有 Mercurial 中的子文件夹。

我要保留的文件夹:

a/b/c/d/e/f

以下所有内容:

a/b

应该被忽略。

我在 .hgignore 文件中使用正则表达式模式。这是我到目前为止所做的:

a/b/(?!c)
a/b/c/(?!d)
a/b/c/d/(?!e)
a/b/c/d/e/(?!f)

即使这样可以正常工作,我也想将其缩小为一行:

a/b/(?!c/d/e/f)

除非这不起作用。我尝试了几种方法来逃避斜线,但都没有帮助。

有什么提示吗?

【问题讨论】:

    标签: regex mercurial


    【解决方案1】:

    你试过这个吗:

    a/b/(?!c).*
    

    【讨论】:

    • 这不会忽略a/b/c/doom,例如... :(
    【解决方案2】:

    您可能已经知道这一点,但是您可以在 a/b/c/d/e/f 中添加内容,而无需向 .hgignore 添加异常。它并不完美,您必须记住添加任何新文件,但我想我会提到它,因为它对我们 CVS/SVN 难民来说并不明显。

    【讨论】:

    • 嗯。是的,我知道这一点,但我宁愿避免这种习惯。这真的很容易出错,我通常会忘记事情......
    • 很公平。您可以使用 hg status -i -n | grep '^/a/b/c/d/e/f' | xargs hg add 之类的东西将其自动化,您甚至可以将其放入预提交挂钩中。但实际上,如果您对该项目的布局有任何控制权,您可能应该将重要的内容和 5 个级别的内容移至更顶级的目录。 :)
    【解决方案3】:
    ^a/b/(?!c/d/e/f).*$
    

    【讨论】:

      【解决方案4】:

      为什么不直接在 a/b/c/d/e/f 中创建 hg 存储库?

      【讨论】:

      • 因为a是主repo,b是外部依赖,a/b/c/d/e/f是b的一个组件。
      猜你喜欢
      • 2011-10-23
      • 1970-01-01
      • 2013-09-26
      • 2018-09-17
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多