如何将同时创建的2个分支合并到main,返回main而不会产生冲突

时间:2013-03-01 01:40:20

标签: clearcase

enter image description here

在这个例子中,如何从正常处理的“windows”和“test”分支合并回“main”(红线)?

例如,“windows”分支下的开发人员通过设置A = 1来修复错误,然后测试“windows”下的修复并将其称为“完成”,因此他将“windows”合并为“main”作为“ main / 8“到目前为止这不是问题。

但是,然后,说“test”分支下的开发人员将A更改为“A = 0”以修复他正在处理的错误。

当“test / 4”合并回“main”时会发生什么?

现在“main / 9”显示“A = 0”,覆盖“windows / 1”所做的修复。

然后说在“windows”下工作修复的开发人员现在需要处理另一个修复并创建“windows_2”。他会认为A仍然是“A = 1”,因为他就是这样离开的。开发人员可能会经历一个痛苦的过程,发现现在“A = 0”。

如何处理这些类型的更改,因此当从主“主干”并行创建分支时,更改不会从一个合并转换到下一个合并?

任何信息将不胜感激。 非常感谢你。

1 个答案:

答案 0 :(得分:0)

  

当“test/4”合并回“main”时会发生什么?

这是一个非平凡的合并,因为与“共同祖先”相比,“A=”的*相同*行已被修改两次。这在合并期间是明显的冲突,并且它不会是自动冲突。

因此,合并回test分支的开发人员必须在testwindows行之间进行选择,并希望与windows分支的开发人员进行核对。 / p>

来自merge page

  

当两个或多个贡献者与基础贡献者不同时,Diff Merge会检测到冲突,并提示您解决冲突。它显示所有贡献者差异,您可以接受或拒绝每个贡献者。

          [changed 10]            |          [changed to 10 file 2]---
A;                                | A=1;
                                 -|-
          [changed 10]            |          [changed to 10 file 3]---
A;                                | A=0
                                  |-
Do you want the CHANGE made in file 2? [yes] 
no  
Do you want the CHANGE made in file 3? [yes] 
yes
Applying CHANGE from file 3 [line 10]
============

但真正的答案是沟通:如果相同的文件需要修改(特别是在相同的行),应该有一些方法管理和协调这些类型的开发工作。

ClearCase还提出了结帐锁定(cleartool checkout -reserved),这会阻止在test版本签出时检出windows。这也可以促使test上的开发人员与他/她的同事核实,并了解正在进行修复的性质。