我试图将一个分支重新集成到主干中,它一直告诉我分支中缺少主干中的修订,但是当我尝试将修订合并到分支时,它显示不需要合并。我在 vs2010 中使用 VisualSVN,但即使直接进入源文件夹并使用 Tortoise,我也会遇到同样的错误。
错误:
当我尝试返回并合并已经合并的修订时合并日志(这是来自分支的图片,试图从主干合并修订)
这是分支的修订日志:
这是来自主干的修订日志:
我试图将一个分支重新集成到主干中,它一直告诉我分支中缺少主干中的修订,但是当我尝试将修订合并到分支时,它显示不需要合并。我在 vs2010 中使用 VisualSVN,但即使直接进入源文件夹并使用 Tortoise,我也会遇到同样的错误。
错误:
当我尝试返回并合并已经合并的修订时合并日志(这是来自分支的图片,试图从主干合并修订)
这是分支的修订日志:
这是来自主干的修订日志:
我有两种方法解决了这个问题:
(1) 在您的主干中,对有问题的文件进行空白更改并将其提交到主干。然后将此更改合并到您的分支中。这应该强制该文件的分支上的 mergeInfo 属性将其结束范围更新为最新版本。
这仅在相关文件的 MergeInfo 中没有间隙时才有效:
/trunk/[path to file on HD]:750-763.
从主干获取更新后,这将强制合并信息看起来像这样:
/trunk/[path to file on HD]:750-791.
如果有间隙,它将不起作用:
/trunk/[path to file on HD]:750-755, 766-788.
它只会更新最后一个范围,从 766-788 到 766-791,仍然跳过有问题的修订。在这种情况下,您必须执行选项 2。
(2) 如果您 100% 确定缺少的修订确实在您的分支中,并且有问题的文件在主干和分支中是相同的,我只会建议这样做。否则,这可能会导致在将分支重新集成回主干时丢失更改。
在您的分支的本地副本中,导航到有问题的文件夹/文件,右键单击,在 tortoise svn 菜单中选择属性。突出显示“svn:mergeinfo”属性并单击“编辑”。
由于您知道更改已经在您的分支中,因此请更改主干中合并修订的范围以强制它包含缺少的修订:
/trunk/[path to file on HD]:750-755, 764, 766-788.
将此 mergeinfo 属性更改提交到您的分支。当您将此分支重新集成回主干时,您应该不再有任何错误。
如果您的主干和分支之间的文件发生更改,您将不得不在提交时将差异添加到您的分支,这样您就不会在重新集成您的分支时将它们从主干中删除。