1

在此处输入图像描述

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

例如,“windows”分支下的开发人员通过设置A=1修复了一个bug,然后在“windows”下测试修复并称之为“done”,因此他将“windows”合并回“main”为“main/8” ” 到目前为止,这还不是问题。

但是,假设“测试”分支下的开发人员将 A 更改为“A=0”以修复他正在处理的错误。

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

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

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

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

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

4

1 回答 1

0

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

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

因此,合并回test分支的开发人员将不得不在testwindowsline 之间进行选择,并希望与windows分支的开发人员进行核对。

合并页面

当两个或更多贡献者与基本贡献者不同时,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与他/她的同事核实,并了解正在完成的修复的性质。

于 2013-03-01T02:31:11.470 回答