【问题标题】:Removing binaries from an hg repository从 hg 存储库中删除二进制文件
【发布时间】:2023-04-04 10:22:01
【问题描述】:

Mercurial 是否可以删除所有具有特定扩展名的文件?我做了一个 addremove,然后我所有的二进制 .pyc 都被版本化了,现在我在做版本控制时得到了这个停止器:

tool kdiff3 can't handle binary
tool docdiff can't handle binary
 no tool found to merge bnano-www/wtforms/widgets.pyc
keep (l)ocal or take (o)ther? o
19 files updated, 67 files merged, 0 files removed, 0 files unresolved

C:\Users\developer\bnano\bnano-www>

我真的不知道这意味着什么,除非我可以按 o 选择其他并继续我的工作。现在我想清理我的存储库,最佳方案是能够在不添加二进制文件的情况下进行 addremove,但我认为这是不可能的。

你能给出一些建议在这种情况下该怎么做吗?

谢谢

【问题讨论】:

    标签: version-control mercurial binaryfiles


    【解决方案1】:

    HgIgnore

    首先,您可以在.hgignore 文件中添加一些规则,告诉 Mercurial 您要忽略某些文件。然后,hg addremove 不会自动添加它们,它们也不会在命令的输出(即hg status)中显示为未跟踪。

    删除文件

    要删除您的文件,您可以使用hg remove myfile,例如,如果您的所有pyc 文件都在同一个目录中,您可以使用hg remove *.pyc 然后提交更改。

    如果您的文件分散在各个存储库中,hg remove -I *.pyc **/* 之类的文件应该删除所有目录中的所有 .pyc 文件。

    排除模式

    仅供参考,在.hgignore 文件中添加不需要的文件会更好吗,您也可以通过hg addremove -X *.pyc 告诉addremove 忽略某些文件。这将添加/删除所有文件,除了具有pyc 扩展名的文件。

    您可以使用 help 找到有关特定 mercurial 命令的帮助。例如,hg help addremove。总的来说,一切都解释得很清楚!

    教程

    为了更深入地探索各种 Mercurial 概念,我推荐这个优秀的教程:http://hginit.com

    【讨论】:

    • 谢谢。这是我正在寻找的忽略选项。我还在学习 Mercurial,目前只知道一些琐碎的操作。
    • Holymoly that hg remove -I .pyc **/ 不仅删除了 .pyc,还删除了其他所有内容!当心
    【解决方案2】:

    要从存储库中删除所有个二进制文件,您可以使用Mercurial filesets:

    hg remove "set:binary()"
    

    正如其他海报所提到的,在 .hgignore 文件中添加不需要的扩展名是个好主意。

    【讨论】:

    • 我知道这是一个老问题,不会帮助 OP,但也许这会在未来帮助某人。
    【解决方案3】:

    您应该能够像删除任何其他文件hg remove *.pyc 一样删除它们。您可能希望将 .pyc 添加到 .hgignore 文件中,以防止它们在您使用 addremove 时再次出现。

    一般来说,您应该在未来使用hg add 选择性地添加文件,因为随着项目的发展,它包含的文件应该相对较快地稳定下来。

    【讨论】:

      猜你喜欢
      • 2015-11-23
      • 1970-01-01
      • 2012-06-11
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多