【问题标题】:Can Mercurial use .hgignore to forget files?Mercurial 可以使用 .hgignore 来忘记文件吗?
【发布时间】:2011-03-19 23:07:49
【问题描述】:

我忘记将正确的 .hgignore 放入我的项目中,现在我的存储库中有许多无用的文件。由于这些文件已经在源代码控制之下。hgignore 不会选择它们。

有没有办法让 hg 忘记所有与 .hgignore 匹配的文件?

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    filesets awesomeness(需要 1.9):

    hg forget "set:hgignore() and not ignored()"
    

    【讨论】:

    • 确实,这正是我想要的。以前从未听说过文件集,谢谢您的提示。
    • 哇,这很容易(与 git 相比)。谢谢伊丹!
    • 这必须是 mercurial 的一部分
    • 不可能记住这个命令,我想我已经google了一百次了。
    【解决方案2】:

    您需要删除该文件以使其被忽略。

    hg remove -Af myfile
    

    (从修订中删除,同时在您的工作区上保留副本:或hg forget

    但您的 Mercurial 存储库不会“忘记”以前版本中的那些相同文件。

    删除文件不会影响其历史记录。
    重要的是要了解删除文件只有两个效果。

    • 它从工作目录中删除文件的当前版本。
    • 它会阻止 Mercurial 从下一次提交时开始跟踪对文件的更改。

    删除文件不会以任何方式改变文件的历史记录。


    另一种方式,当您现在需要忽略大量额外文件时:

    • 删除它们(从文件系统中,不是使用 hg 命令,而是使用 OS 'rm' 命令)
    • hg addremove(警告,它会添加当前未提交的文件,但它会hg remove您刚刚 rm'ed 的所有其他文件)

    请参阅How to forget all removed files with Mercurial 了解更多信息。

    【讨论】:

    • 是的,我知道我可以手动完成,但我想在我的文件上再次应用 .hgingore 模式以忘记所有匹配的文件。我想删除数百个 CVS 文件夹和类。
    • @OlivierS:我明白了。我已更新我的答案以更好地解决您的问题。
    【解决方案3】:

    我认为 hg 不能开箱即用。

    但是,您可以轻松推出自己的产品。 hgignore 条目是 regexp 或 glob,因此您可以浏览这些条目并找到匹配的文件/目录并对其执行“hg remove”。

    对于hgignore解析/匹配,如果你使用python你可以调用hg的ignore.py中的函数。

    也许有人可以为此写一个扩展。

    【讨论】:

    • 我得出了同样的结论并尝试了它,但只持续了 20 分钟。还没有成功,但我在 dirstate 类中找到了重要的调用。 hg API 缺少文档。
    • 他们故意这样做,似乎,可能是因为它变化太快:“Mercurial API 主要用于内部使用和创建扩展,并且随时可能发生变化”(来自@ 987654321@)。一旦你习惯了,hg 代码就会非常干净。
    • for /f "delims=" %i in ('dir bin /ad/s/b') do hg forget %i/。看我的回答
    【解决方案4】:

    这是我对 .hgignore 中提到的每个目录所做的

    for /f "delims=" %i in ('dir bin /ad/s/b') do hg forget %i/

    对于文件

    for /f "delims=" %i in ('dir *.user /s/b') do hg forget %i

    免责声明:
    我不知道它是否可以在非 Windows 操作系统上运行。

    【讨论】:

      【解决方案5】:

      Idan K 的解决方案很棒。我为我的全局 mercurial.ini 添加了一个别名,因为我不记得该命令。

      [alias]
      forgetignored = forget "set:hgignore() and not ignored()"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-27
        • 2016-01-13
        • 2011-01-11
        • 2011-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多