我正在创建一个svn diff补丁,但似乎没有包含图像文件。该补丁包含每个图像文件的类似行,如下所示:
Index: crimgeoprofile/code/jquery/css/ui-lightness/images/animated-overlay.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: crimgeoprofile/code/jquery/css/ui-lightness/images/animated-overlay.gif
===================================================================
--- crimgeoprofile/code/jquery/css/ui-lightness/images/animated-overlay.gif (revision 1510040)
+++ crimgeoprofile/code/jquery/css/ui-lightness/images/animated-overlay.gif (working copy)
我使用以下命令创建补丁:
svn diff > test.diff
有关如何包含图像文件的任何建议将不胜感激。
答案 0 :(得分:2)
SVN不支持在差异中包含二进制文件。作为旁注:git支持二进制文件。生成的补丁文件如下所示:
diff --git a/bin/windows/SDL_mixer.dll b/bin/windows/SDL_mixer.dll
new file mode 100644
index 0000000000000000000000000000000000000000..f48ee2da696f92b66940b91b52aa53c2
GIT binary patch
literal 160256
zcmd?S4SZD9)i*kmOyYopCrYBxf<%o9l`2uFL_&=TgA|RT7>j7Ev^CX7sg%wregu+E
z26K8G$kPW}+uD|hZFwrKv_*(YAs@UMf~XNJW(<Ug6wVlm;iDl0WbXgJ_BoSD06*UQ
z-h1DBFF(yWXYaMwUVE*z*Is+=k13j2?MQYw94`DHi#Z&%c=BJq{Qc}d<;Xr~#Ovoc
zRu6jXl3M4jZ(VZNLl6HbYtG!qzCU-??5yw3`oRw#^JRVK!K}IdA7nlJgRDunPtThD
从技术上讲, 是可能的,它只是不适用于svn。因此,如果您迫切需要包含二进制文件的补丁文件,请考虑使用git检出svn。这很简单:git svn clone http://path/to/svn
。也与svn://...
类似。然后,您可以创建一个git diff,并将该diff应用于任何目标。目标不需要是git存储库。 git apply my.patch
答案 1 :(得分:2)
使用Suversion 1.9,您可以使用--git标志将二进制内容包含到补丁文件中,例如:
svn diff https://storage/svn/project/trunk --git -c 42 > patch-42.diff
Subversion 1.8已经有了--git标志,但忽略了它的二进制内容。
答案 2 :(得分:1)
不幸的是,svn diff不处理二进制数据。
答案 3 :(得分:0)
图像文件包含在您的差异中,如带有---和+++的行所示,但它们作为整个文件包含在补丁中 - 这部分是由于如何有意义地显示更改的问题在二进制数据中,例如以纯文本格式的图像 - 除非你想要十六进制差异的页面,(例如fc -b a.gif b.gif
会产生)。
所以你被告知文件已经改变了,由你来决定你要如何比较它们 - 对于图像文件来说,最重要的区别之一就是人眼 - 你不会期望的修订控制系统,能够告诉你“这是一个皱着眉头的男人的照片,但现在是一个漂亮的红发啦啦队员微笑”你会吗?