在Mercurial上修补图像的移动

在Mercurial上修补图像的移动,mercurial,Mercurial,在我的项目中,我有一个PNG文件,我想将其移动到另一个目录中。 我做完了 mv f.png foo/f.png hg addremove hg diff > patch.diff 但我在我的补丁中得到了这个: diff -r f0a573ab03b1 Bundles/rc/f.png Binary file Bundles/rc/f.png has changed diff -r f0a573ab03b1 Bundles/media/rc/f.png Binary file Bundle

在我的项目中,我有一个PNG文件,我想将其移动到另一个目录中。 我做完了

mv f.png foo/f.png
hg addremove
hg diff > patch.diff
但我在我的补丁中得到了这个:

diff -r f0a573ab03b1 Bundles/rc/f.png
Binary file Bundles/rc/f.png has changed
diff -r f0a573ab03b1 Bundles/media/rc/f.png
Binary file Bundles/media/rc/f.png has changed

所以当我应用它时,它不起作用。。。有人能帮我吗?

首先,你应该使用
hg mv
而不是
mv
。这样,Mercurial知道您重命名了该文件。使用
addremove
时,先删除文件,然后添加文件,这会污染历史记录

下一个问题是补丁。修补程序格式不支持二进制文件。无法为图像创建修补程序

尝试
hg导出--git
而不是
hg diff
。见这个问题:


hg export
hg import
知道如何处理各种紧急情况(如保存提交消息)。

好的,那么有没有办法只修补图像位置的修改?尝试使用
hg mv
重命名图像。也许它可以在补丁中对其进行编码。如果不起作用,您必须通知其他开发人员移动文件。您可以使用
hg diff-g
hg export-g
使
diff/export
使用git的扩展diff格式,该格式可以处理二进制文件、重命名等。请参阅
hg help diff
。您还可以在
~/.hgrc
[diff]
部分中设置
git=true
,以默认获取git样式的差异。请注意,大多数修补程序工具不理解修补程序格式的git扩展,因此请确保收件人可以使用此类修补程序。