【问题标题】:.hgignore whole directory tree excepting one specific file.hgignore 整个目录树,除了一个特定文件
【发布时间】:2009-11-05 03:09:41
【问题描述】:

谁能告诉我 .hgignore 模式来跟踪目录中的一个特定文件并忽略其他所有内容?

出于显而易见的目的,我有一个包含“default.png”的“媒体”目录,该目录的其余部分将保存用户媒体。我们希望 hg 忽略媒体目录中除默认文件之外的所有内容。

【问题讨论】:

    标签: mercurial hgignore


    【解决方案1】:

    试试:

    syntax: regex
    ^media/.*
    

    或(将其保留在默认的 glob 中并执行)

    media/**
    

    然后手动hg add media/default.png

    在 mercurial(与 CVS 中不同)中,您可以添加与您的忽略模式匹配的文件,它们可以正常工作。因此,请广泛忽略 hg add 您想要跟踪的内容。

    【讨论】:

    • 这确实有效,但是它需要您手动添加所需的文件,如果您添加与模式匹配的新文件(例如,如果您在 *.c 上匹配),hg 不会注意到。
    • 完全正确。我仍然喜欢它而不是消极的前瞻性的东西,但不是每个人都喜欢。就我个人而言,我只是确保我的临时文件和我要保存的东西最终位于不同的目录中,这样我就不必担心了。
    【解决方案2】:
    syntax: regex
    ^media/(?!default.png$)
    

    与 John Mee 的几乎相同,但匹配到行尾,而不是任何以 default.png 开头的内容。

    如果你想允许任何 .c 文件,但没有别的,你可以使用:

    ^media/(?!.+\.c$)
    

    【讨论】:

      【解决方案3】:

      总结为 BKM(Best Known Method)

      要么 hgignore 一切,然后 hg 添加回你想要跟踪的几个文件。

      或者使用诸如

      之类的模式
      syntax: regex
      ^path/(?!files-that-you-want-not-to-ignore$)
      

      (我只是想在一个地方看到完整的答案。)

      【讨论】:

      • 如何指定多个文件?
      【解决方案4】:

      没关系,这似乎有效......

      syntax: regex
      ^media/(?!default.png)
      

      【讨论】:

      • 这也将匹配 default.png.sadkjsdhfdshfjkds
      • 是的,最后需要一个'$'来确定。看看你的答案。
      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多