我有一些局部变化到使用Subversion作为它的源代码控制的一个开源项目。 (我没有承诺对原有项目库的访问。)
我的变化增加了一个文件,但该文件不包含在“SVN DIFF”的输出。 (这可能是值得一提的是,新的文件是二进制,而不是纯文本。)
我怎样才能让一个补丁 ,其中包括新的文件?
$ svn st
A tests/foo.zip
$ svn diff
$
我有一些局部变化到使用Subversion作为它的源代码控制的一个开源项目。 (我没有承诺对原有项目库的访问。)
我的变化增加了一个文件,但该文件不包含在“SVN DIFF”的输出。 (这可能是值得一提的是,新的文件是二进制,而不是纯文本。)
我怎样才能让一个补丁 ,其中包括新的文件?
$ svn st
A tests/foo.zip
$ svn diff
$
您是二进制文件事实上也正是它为什么不显示我害怕。 Subversion的diff命令只做文字的diff /补丁(虽然Subversion内部使用可以有效地处理版本之间的二进制文件差异)。
我经历过类似的行为Pozsar。 他的回答为我工作比正常的svn差异--force更好。 但是,如果一个DOS机(例如,通过Cygwin)上运行,则可能需要稍微修改他的回答。 下面的差异+补丁工作了使用--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
有一个--force选项,diff命令,但它产生了不正确的补丁文件我的机器上的二进制文件。 与--diff-CMD选择使用它,但对我的作品:
svn diff --force --diff-cmd /usr/bin/diff -x -au
我认为这会产生你想要的到底是什么。
如果你正在构建一个补丁,你可能需要使用普通的老“差异”用它把丢失的文件为空--new-file选项。
请注意,此选项的语法实际上可能取决于你使用的是什么版本的老式差异的。