我对一个开源项目进行了一些本地更改,该项目使用Subversion作为其源代码控制。(我对原始项目存储库没有提交访问权限。)
我的更改添加了一个文件,但是这个文件没有包含在"svn diff“的输出中。(可能值得注意的是,新文件是二进制文件,而不是纯文本。)
如何制作包含新文件的patch?
$ svn st
A tests/foo.zip
$ svn diff
$
发布于 2008-10-01 22:20:28
您的文件是二进制的,这就是它不能显示的原因。Subversion的diff命令只执行文本差异/补丁(尽管Subversion内部可以有效地处理版本之间的二进制文件差异)。
发布于 2010-02-13 07:46:36
我经历过类似于Pozsar的行为。他的回答对我来说比普通的svn diff -force更有效。但是,如果在DOS机器上运行(例如通过Cygwin),您可能需要稍微修改他的答案。下面的diff +补丁使用--binary arg在Cygwin中修补我的文本+二进制文件:
svn diff --force --diff-cmd /usr/bin/diff -x "-au --binary" OLD-URL NEW-URL > mybinarydiff.diff
patch -p0 --binary -i mybinarydiff.diff
发布于 2009-06-26 21:42:42
diff命令有一个--force选项,但它为我的机器上的二进制文件生成了不正确的补丁文件。不过,将它与--diff-cmd选项一起使用对我来说是有效的:
svn diff --force --diff-cmd /usr/bin/diff -x -au
我认为这就是您想要的结果。
https://stackoverflow.com/questions/159853
复制相似问题