从hg存储库中删除二进制文件

6

使用 Mercurial 是否可以删除所有特定扩展名的文件?我进行了添加和移除操作,然后发现我的二进制 .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操作而不会添加二进制文件,但我认为这是不可能的。
你能否给出一些建议?谢谢。
3个回答

7

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,迄今为止只知道基本操作。 - Niklas Rosencrantz
3
天啊,那个hg remove -I *.pyc **/*不仅删除了.pyc文件,还把其他的都删掉了!注意避免这种情况。 - Shayne

3

如果你想从代码库中删除所有的二进制文件,你可以使用Mercurial filesets

hg remove "set:binary()"

正如其他帖子中提到的那样,将不需要的扩展名添加到.hgignore文件中是一个好主意。


2
我知道这是一个老问题,不会对提问者有所帮助,但也许将来会有人受益。 - Cody Piersall

1
您应该能够像删除其他文件一样删除它们 hg remove *.pyc。您可能希望将 .pyc 添加到 .hgignore 文件中,以防止在使用 addremove 时它们重新出现。
总的来说,将来您应该使用 hg add 有选择地添加文件,因为随着项目的发展,它包含的文件应该相对稳定。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接