我最近从旧的subversion服务器/存储库迁移到最新版本1.8.9。新存储库是在新服务器上从头开始创建的,旧数据是从头开始导入的(我们检查了旧存储库中的代码,在本地导出它以删除所有SVN绑定并将其重新检入新存储库中)。
一切似乎都很好。
我们几个月来一直在使用新的存储库。我最近去了一个分支到主干。它抛出了大量可怕的树冲突。我无法理解这一点。主干和分支应该是同步的(主干中的所有内容也在分支中,唯一的新代码是分支中的代码,这是我们试图合并的代码)。出于纯粹的挫败感,我点击了Do reintegrate instead of automatic merge (old style)
:
现在点击合并它有效吗?!
为什么我没有得到它?有人解释为什么会发生这种情况和/或这两种合并类型之间存在什么差异?似乎没有关于这意味着什么的文档。
我唯一可以看到的可能是有点不寻常的是我们在某些时候从主干到分支合并(可能已经完成了一些“紧急”变更)。
相关版本号:
subversion : 1.8.9
Tortoise: 1.8.8
Repository : V6
答案 0 :(得分:14)
我想知道"旧式"之间的实际区别是什么? 合并和"新风格"
TortoiseSVN手册尚未更新,以涵盖新的自动重新整合合并功能,当您明确指定您正在进行重新整合合并时仍然contains instructions for the old workflow (the one called 'old style')。以下是TortoiseSVN中旧式和新式的区别:
旧样式 = svn merge --reintegrate
。在Subversion 1.7及更早版本中,您必须通过在命令行中附加--reintegrate
选项来明确指定您执行重新集成合并。
新款式 = svn merge
。 Subversion 1.8+中不推荐使用--reintegrate
选项。合并是否重新集成由Subversion客户端自动确定。但是有三个先决条件 - 你的工作副本
Subversion 1.8发行说明中描述了新的自动重新集成合并:Automatic reintegration merge (--reintegrate option deprecated)。
该功能也在SVNBook 1.8 | Reintegrating a branch中描述。您可以将章节与the SVNBook 1.7 version进行比较,以了解Subversion 1.7和1.8版本之间工作流程的不同。
TortoiseSVN 1.7('旧式')与1.8('新式)行为were well summarized by Bob Archer in TortoiseSVN's users mailing list的差异。
也最好解释为什么这会导致冲突使用 新风格,但不使用旧风格?
在两次合并(使用--reintegrate
之后没有看到工作副本的状态时)没有看到它的状态,我很难说出发生了什么以及为什么指定--reintegrate
显式改变了行为)。我猜SVN 1.8无法检测到重新整合合并,所以你必须明确地运行它。