使用TortoiseSVN时,应用失败的块是什么意思?

14
如何使用TortoiseSVN来应用补丁,如果初始失败了一个或多个拒绝的块?
是否可以使用TortoiseMerge来查看失败的结果并选择要应用的行?
如果不行,那么在遇到失败块后该怎么办?手动编辑补丁文件似乎不是最完美的解决方案(除了不知道如何“修复”它们)。

我不确定Git是否可以做得更好,但是如果我没记错的话,使用Git会得到一个包含冲突标记的冲突文件,然后您可以解决它。 - knittl
5个回答

6

我能想到的一种方法是:

  1. 将干净的工作副本切换到补丁的基本版本
  2. 应用补丁
  3. 提交到分支
  4. 切换到主干或你想要应用补丁的工作分支。
  5. 对工作副本执行典型的svn合并,合并第3步中的修订版。

3
我最终使用了内置的Visual Studio合并工具,按照这里所述:在Visual Studio 2012中比较两个文件。我喜欢Visual Studio的差异工具胜过TortoiseSVN。你仍需要另一个分支/主干来应用补丁,但这样你就不需要先提交它。
以下是操作步骤:
  1. 将(干净的)工作副本切换到补丁的基本修订版本
  2. 应用补丁
  3. 使用那个链接描述的方法之一来比较文件。

在第三步中,您实际上可以使用任何比较工具,例如TortoiseMerge(我更喜欢它)。因此,对于旧的OP的问题的答案是“是的,您可以这样做”。我曾经使用TortoiseSVN的“稍后差异”功能来完成此操作,但只要将创建补丁的文件与接收补丁的文件进行比较,它就可以工作。 - Elliott Beach

0

我的“失败的块”消息可能是由于TortoiseSVN或SVN的不同版本引起的。

我将我的分支还原到同事补丁中指定的修订版,然后应用它,忽略了“失败的块”消息,从同事补丁引入的更改创建了我的补丁,并比较了两个补丁。有很多相同差异的出现:“(修订版0)”与“(不存在)”。所以我也忽略了它们。就这样!


0

我的解决方案与Yakov Galkas类似,但不使用额外的分支:

  1. 将工作切换到补丁的基本修订版
  2. 应用补丁。现在不应该有失败的hunks。
  3. 更新到HEAD修订版。您可能会遇到合并冲突。
  4. 像往常一样解决合并冲突,您不必手动修复补丁文件。

0
在我们的情况下,问题是由于两次应用补丁引起的。第一次打补丁时创建了新文件,但在再次应用补丁之前没有将其删除。
因此,删除第一次打补丁时创建的文件解决了我们的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接