如何确定svn:mergeinfo是否损坏,以及如何修复它?

7
我怀疑我的合并信息已经损坏,但我不确定。有人知道如何确定问题所在以及哪些资源可以帮助解决问题吗?
这里是问题所在。我们的团队最近转向敏捷开发,并使用特性分支(实际上是故事分支),不同的团队同时在相同的源代码上工作。当故事达到高度可用状态时,团队将其合并到主干。由于缺少更改、意外更改和冲突,合并需要数天甚至数周时间。我们讨论的是由5-10人组成的团队,而努力和变动似乎过高。
人们使用以下合并模式: a)PULL - 将主干合并到分支,解决,测试,提交 b)PUSH - 将分支合并到主干,解决,测试,提交 c)重新创建分支(通常创建新的故事分支并删除旧的分支,因为它已完成)
最终,分支和主干应该保持一致。
我们遇到的问题:
1.在从主干合并到分支时未报告更改,但在随后的从分支合并到主干中出现。 2.在合并期间出现svn:mergeinfo属性冲突。 3.文件丢失,但在分支上添加了本地编辑的新文件并推送到主干。 4.传入+本地删除(文件在主干和分支上都被删除,但显示为冲突)。
(1)不应该发生。从分支到主干的合并应该使两者在所有已经在主干上的更改上保持同步。分支到主干合并中的更改是发生在主干上的更改。因此,在第一次合并中,它们应该已经传播到分支,但没有。这表明合并信息数据存在损坏,会“隐藏”主干更改。
(2)不应该发生。SVN应该管理合并跟踪中的更改。这也指向合并信息数据的损坏。
(3)不应该发生。这是在分支上添加新文件的情况。它应该显示为添加到主干的新文件。这也指向合并信息数据的损坏。
(4)我认为这是一个SVN错误,我们无法解决这个问题。即使这是我们唯一的问题,我也很高兴。
我们当前使用svn 1.5.x服务器,客户端使用svn 1.6.x和svn+ssh进行连接。我们计划升级到最新版本的SVN,因为一些修复可能会影响我们的问题。
尽管如此,看起来我们的合并信息数据是错误的。
合并不报告所有更改 合并svn属性时出现冲突
有没有好的地方可以让我开始寻找?

SVN 1.6.11客户端可能是我的答案。我使用了Wandisco升级站点(非常棒),合并地狱的问题得到了很大缓解。 - Petra Kahn
你在使用“--reintegrate”标志进行“push”合并吗?你之后有一个“resolve”步骤,这表明你没有使用它。我找不到具体的文档说没有“--reintegrate”的双向合并无法工作,但是“--reintegrate”的存在表明svn的合并否则无法胜任。 - slowdog
2个回答

3
我们由于类似的情况遇到了类似的问题,但大部分已经解决了。主要问题是:
如果在创建分支后从主干合并到你的分支中,你需要使用svn merge --record-only标记主干与分支提交(commit),否则当你尝试重新集成回主干时,它会尝试将主干的提交合并回分支到主干中。这显然会导致撤销后面主干->分支提交之后对主干进行的更改,往往会引起大规模冲突(特别是树冲突,如果你在主干中创建了新文件或目录等)。因此,我们的处理方法是:要么在创建后不再将主干同步到分支(对于短期分支来说很好用),要么按照以下步骤操作:
1. 从主干创建分支b 2. 提交到主干和分支 3. 将主干重新集成到分支并提交(解决冲突,但不进行任何更改,甚至不编译) 4. 立即进行 svn merge --record-only 标记主干到分支的提交版本号 5. 解决分支的其他问题并继续开发 6. 完成后从分支重新集成到主干。
我发现这篇文章http://www.collab.net/community/subversion/articles/merge-info.html在我们解决问题时非常有帮助。

请参阅https://dev59.com/tnA75IYBdhLWcg3waIQJ,了解有关v1.6中子版本分支重新集成的相关信息。 - Malcolm

2

我做了一些关于SVN分支/合并的实验,并发现在某些情况下合并可能会失败 - 例如,来自主干的更改被覆盖。因此,如果您继续使用SVN进行特性分支,您将面临痛苦的境地。

我也进行了类似的git实验,但我没有找到任何导致错误合并的方法。如果团队/管理层可以接受转向git,我强烈建议使用它。


我听说了,但合并信息属性上的冲突似乎表明了更深层次的问题。 - Petra Kahn
2
我认为我应该让自己更清楚:我尝试在SVN中打破合并,第二次尝试成功了,但我无法在Git中创建损坏/不正确的合并。因此,您可以尝试跟踪合并信息问题的根本原因,或者您可以更有效地利用时间并切换到更适合分支的版本控制系统。 - chalup
1
在我所处的时间框架内转移到Git不是一个选项。因此,我需要在SVN中解决我的问题。 - Petra Kahn
2
团队决定转向git,合并问题似乎已经消失了。现在,我们将使用这个团队作为试点来确定git是否适用于整个组织。 - Petra Kahn

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