Subversion合并需要"旧式",即使所有看起来都是最新的?

Lia*_*iam 7 svn version-control tortoisesvn merge

我最近从旧的subversion服务器/存储库迁移到最新版本1.8.9.新存储库是在新服务器上从头开始创建的,旧数据是从头开始导入的(我们检查了旧存储库中的代码,在本地导出它以删除所有SVN绑定并将其重新检入新存储库中).

一切似乎都很好.

我们几个月来一直在使用新的存储库.我最近去了一个分支到主干.它抛出了可怕的树冲突.我无法理解这一点.主干和分支应该是同步的(主干中的所有内容也在分支中,唯一的新代码是分支中的代码,这是我们试图合并的代码).出于纯粹的挫败感,我点击了Do reintegrate instead of automatic merge (old style): 在此输入图像描述

现在点击合并它有效吗?!

为什么我没有得到它?任何人解释为什么会发生这种情况和/或这两种合并类型之间的差异是什么?似乎没有关于这意味着什么的文件.

我唯一可以看到的可能是有点不寻常的是我们在某个时刻从主干到分支合并(可能已经完成了一些"紧急"变更).

相关版本号:

subversion : 1.8.9
Tortoise: 1.8.8
Repository : V6
Run Code Online (Sandbox Code Playgroud)

bah*_*rep 16

我想知道"旧式"融合与"新风格"之间的实际区别是什么

TortoiseSVN手册尚未更新,以涵盖新的自动重新整合合并功能,并且当您明确指定您正在进行重新整合合并时,仍然包含旧工作流程(称为"旧样式")的说明.以下是TortoiseSVN中旧式和新式的区别:

  1. 旧式 = svn merge --reintegrate.在Subversion 1.7及更早版本中,您必须通过--reintegrate在命令行中附加选项来明确指定您执行重新集成合并.

  2. 新风格 = svn merge.--reintegrate在Subversion 1.8+中不推荐使用该选项.合并是否重新集成由Subversion客户端自动确定.但是有三个先决条件 - 你的工作副本

    • 不能进行任何本地编辑,
    • 不能有切换路径,
    • 工作副本不得为混合修订版.

Subversion 1.8发行说明:自动重新集成合并(不推荐使用--reintegrate选项)中描述了新的自动重新集成合并.

该功能也在SVNBook 1.8中描述 重新整合分支.您可以将本章与SVNBook 1.7版本进行比较,以了解Subversion 1.7和1.8版本之间的工作流程差异.

在TortoiseSVN的用户邮件列表中,Bob Archer很好地总结了 TortoiseSVN 1.7('旧式')与1.8('新式)行为的差异.

还最好解释一下为什么这会引起使用新风格但不使用旧风格的冲突?

在两次合并之后都没有看到工作副本的状态(有--reintegrate和没有它),我很难说出当时发生了什么,以及为什么指定--reintegrate显式改变了行为).我猜SVN 1.8无法检测到重新整合合并,所以你必须明确地运行它.

  • @Liam概念Subversion功能之一是工作副本可以有dirs和具有不同revnumbers的文件.SVNBook中有一个很好的解释http://svnbook.red-bean.com/en/1.8/svn.basic.in-action.html#svn.basic.in-action.mixedrevs (2认同)