subversion diff包括新文件

时间:2008-10-01 21:30:04

标签: svn patch

我对一个使用Subversion作为源控件的开源项目进行了一些本地更改。 (我没有对原始项目存储库的提交访问权限。)

我的更改添加了一个文件,但此文件未包含在“svn diff”的输出中。 (值得注意的是,新文件是二进制文件,而不是纯文本。)

如何制作包含新文件的patch


 $ svn st
   A      tests/foo.zip
 $ svn diff
 $

4 个答案:

答案 0 :(得分:28)

我经历过与Pozsar相似的行为。他的回答比普通的svn diff --force更适合我。但是,如果在DOS机器上运行(例如通过Cygwin),您可能需要稍微修改他的答案。以下diff + patch用于使用--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

答案 1 :(得分:12)

diff命令有一个--force选项,但它会为我的机器上的二进制文件生成不正确的补丁文件。使用它与--diff-cmd选项对我有用:

svn diff --force --diff-cmd /usr/bin/diff -x -au

我认为这恰好产生了你想要的东西。

答案 2 :(得分:6)

你的文件是二进制这一事实正是为什么它不显示我害怕。 Subversion的diff命令只执行文本差异/补丁(即使Subversion内部可以在版本之间有效地处理二进制文件差异)。

答案 3 :(得分:0)

如果您正在构建补丁,您可能希望使用普通的旧“diff”和--new-file选项,该选项将丢失的文件视为空。

请注意,此选项的语法实际上可能会有所不同,具体取决于您使用的普通旧差异的版本。