Image 在svn diff修补程序中包含图像文件

Image 在svn diff修补程序中包含图像文件,image,svn,diff,patch,Image,Svn,Diff,Patch,我正在创建一个svn diff补丁,但是似乎没有包括图像文件。修补程序包含每个图像文件的类似行,如下所示: Index: crimgeoprofile/code/jquery/css/ui-lightness/images/animated-overlay.gif =================================================================== Cannot display: file marked as a binary type.

我正在创建一个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

任何关于如何包含图像文件的建议都将不胜感激。

不幸的是,svn diff不处理二进制数据

检查以下部分答案:


特别是:

图像文件包含在您的diff中,如带---和+++的行所示,但它们作为整个文件包含在修补程序中-这部分是由于如何有意义地显示二进制数据中的更改(如仅文本格式的图像)的问题-除非您想要十六进制差异的页面,(例如
fc-b a.gif b.gif
将产生)


因此,您被告知文件已更改,并由您决定如何对其进行比较-对于图像文件,对显著差异的最佳比较之一是人眼-您不会期望版本控制系统能够告诉您“这是一张秃头男人皱眉的照片,但现在是一个漂亮的红发啦啦队队长微笑着说:”你愿意吗?

SVN不支持在diff中包含二进制文件。作为旁注: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
diff--git a/bin/windows/SDL\u mixer.dll b/bin/windows/SDL\u mixer.dll
新文件模式100644
索引0000000000000000000000000000000000..f48ee2da696f92b66940b91b52aa53c2
GIT二进制补丁
文字160256
zcmd?S4SZD9)i*kmoyopcrybxfj7ev^CX7sg%wregu+E

z26K8G$kPW}+uD|hZFwrKv_*(YAs@UMf~XNJW(对于Suversion 1.9,您可以使用--git标志将二进制内容包含到修补程序文件中,例如:

svn diff https://storage/svn/project/trunk --git -c 42 > patch-42.diff

Subversion 1.8已经有--git标志,但忽略其中的二进制内容。

SVN当前无法使用二进制数据创建统一的修补程序文件。如果像在Visual Studio中一样检查修补程序文件,那里没有二进制数据。Subversion开发网站上讨论了此缺失功能:@Ron SVN不能ot生成二进制文件的统一差异文件,如图像文件,但统一差异格式不包括表示两个二进制文件之间差异的任何方法。一般来说,文本格式的增量可能比文件的新副本大,除非更改非常小且本地化,甚至对于压缩SSD格式,如jpeg文件之间的增量可能很大,即使是一个小的更改。MPEG确实通过a)对关键帧使用非常特定的格式来解决这一问题&b)如果您使用
svn diff--git
而不是普通的
svn diff
@BertHuijben(即使使用
--git
它也拒绝区分二进制文件),那么Delta.Subversion 1.9允许生成此类修补程序。它打印修补程序的绝对路径。