2015-07-11 39 views
-2

我在Windows 7平台(所有64位)上使用Subversion命令行工具的1.8.10版和TortoiseSVN的1.8.8.25755版。如何在两个分支之间应用Subversion补丁

我公司的代码在每个版本中都保存在单独的分支中。二月份发布的代码将在分支1中发布; 4月份发布的代码将在分支2中发布。在2月发布之后,我想比较branch2中的代码和branch1中的代码,以确保两者之间不会发生任何更改,并创建一个修补程序文件,该修补程序文件将修改branch2与branch1具有相同的内容。

我能够使用SVN命令行工具来创建使用补丁文件:

svn diff --old=branch1 --new=branch2 > differences.diff

问题的表面,当我尝试应用补丁文件。使用一个非常基本的命令应用补丁:

svn patch differences.diff c:\temp\branch1

结果没有改变BRANCH1。

svn patch --help表示我应该期望在屏幕上看到生成的输出行,指示是应用还是拒绝了更改;我看到绝对没有输出。 --help也表示补丁文件应该有一行指示修补程序可以干净地应用到的分支的修订版本,并给出该行的格式。我的补丁文件不包含符合规定格式的行。

(我也曾尝试将使用TortoiseSVN的补丁,但是龟似乎有些特别,因为它仅适用龟生成的补丁。)

我的问题的话,是有一些魔法应用补丁我没有看到的文件?或者,我的命令是否正确生成补丁文件?或者,我试图完成什么(修补WC2看起来像WC1)根本不支持?

TIA为您提供任何帮助/指导。

+0

在修补之前,您已阅读过'differences.diff'的内容吗?它是否有效补丁? –

+0

这是我第一次尝试创建.diff文件,所以我不是专家,但从我在网上找到的东西看,它看起来像一个有效的补丁......除了我在OP中提到的那行外, (根据--help)应该存在,以指示哪个分支可以干净地应用补丁。 – kenfrmct

回答

0

你的diff格式假定PWD的版本比较BRANCH1和BRANCH2迪尔斯作为直接公共父的力矩(WC,很明显)

任何其他PWD会产生无效的(或者,更可能的 - 空)DIFF

更多防弹风格的差异是svn diff /URL/OF/BRANCH1 /URL/OF/BRANCH2 ...

+0

感谢您的回复。我不确定我是否遵循了你在这里提出的观点。 branch1和branch2是存储库的有效WCs,并生成看起来像有效的.diff文件。在您的文章之后,我使用来自OP的相同命令和存储库分支的URL创建了一个.diff文件。生成的.diff文件与从WCs创建的文件具有相同的内容;但是,这些条目的顺序不同。 (相同的五个文件显示为差异,但它们在原始.diff中的顺序是2,5,4,3,1,与1,2,3,4,5)。我试图将这个.diff应用于相同的结果 - 没有喜悦。 – kenfrmct