【问题标题】:How to check which files are being ignored because of .hgignore?如何检查哪些文件因为 .hgignore 而被忽略?
【发布时间】:2012-09-03 09:14:24
【问题描述】:

我经常担心我的 hgignore 文件可能会排除重要文件。例如,我刚刚注意到我排除了所有 .exe 文件,这些文件排除了一些应该与源代码一起保存的小型可执行工具。包含它们是一个简单的更改,但让我担心这些规则可能会产生意想不到的后果。

有没有办法查看由于.hgignore 文件而没有被跟踪的所有文件的列表?这样我就可以定期查看列表以检查我是否满意。

【问题讨论】:

    标签: file mercurial hgignore


    【解决方案1】:

    hg status -i 命令正是这样做的。

    【讨论】:

    • 打败了我,因为我忙于输入其他字符而无法满足最低字符要求 :) "body must be 30 characters you enter 28"
    • @BurhanKhalid:我也遇到过这个问题......课程:“如果有疑问,请详细说明”;)
    • 无论如何,我总是使用 --long-options 给出答案。更适合教学。 :)
    【解决方案2】:

    @Jon 以正确的答案击败了我,但与status -i 一起,它一文不值:

    • hg status -m(仅修改过的文件)
    • hg status -a(仅添加的文件)
    • hg status -r(仅限已删除的文件)
    • hg status -d(仅限已删除的文件)
    • hg status -u(所有未跟踪的文件)
    • hg status -c(文件没有变化,即“干净”)
    • hg status -A(所有文件,即一切)

    【讨论】:

      【解决方案3】:

      如果您想对文件名进行手动检查,则使用-i/--ignored 标志来状态:

      $ hg status -i
      I ignored file.exe
      

      如果您只想要文件名,则使用-n/--no-status 来禁止打印在每个文件名前面的I 状态代码:

      $ hg status -n -i
      ignored file.exe
      

      如果您需要使用xargs 处理文件,则另外使用-0/--print0 标志:

      $ hg status -n -0 | xargs -0 touch
      

      这将负责正确处理空格 - 使用 -0 时,您最终可能会将 ignored file.exe 视为两个文件:ignoredfile.exe,因为 shell 通常会在空格上拆分。

      以上命令显示匹配.hgignore的未跟踪文件。如果要解决查找.hgignore匹配的跟踪文件的相关问题,则需要使用fileset query。看起来像这样:

      $ hg locate "set:hgignore()"
      

      您可以将文件集与对文件进行操作的所有命令一起使用,例如,您可以这样做:

      $ hg forget "set:hgignore()"
      

      安排删除找到的文件(在您的工作副本中留下一个副本)。

      【讨论】:

        【解决方案4】:

        是的,这是可能的。 如果你正在使用 TortoiseHg 之类的东西,你可以选择你想看的文件。

        这是一个示例

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-29
          • 2010-12-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多