加入收藏 | 设为首页 | Life家族 | SCMLife | RMLife | PMLife | SQALife | TESTLife | 企业VIP专区 | 中文化荣誉殿堂
 
发新话题
打印

[求助] 关于CC的merge问题( 此文章被查看:758次,被回复:8篇!! )

关于CC的merge问题

有两个疑问,想请各位达人们帮忙解答。
1.CC的自动merge原理是怎么样的?
如果现在是这样,有两个branch,分别为branch1和branch2,branch1上有十个结点,branch2上有五个结点。现在要把branch2/5mergeg到branch1/10上,如果是CC自动merge的,那么就会取branch2/5上的最新的内容对吗?
现在工作上出现了一个问题,就是在某一段代码行内,branch2/5是空的,但现在不确定是不是有空行,branch1/10上是有内容的,最后merge完的结果输出的文件就是空的,这应该是正确的吧?
如果反过来merge,是不是就会取branch1/10上的文件了?
2.CC的自动merge规则我们自己可以做改动吗?就是把自己取branch2/5的这种方式改成取branch1/10的方式,当然这只是举的一个例子。



© 本文为 zinnia_aromaSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

ClearCase Merge Algorithm
   1. Involves the following versions(Merge过程中涉及的版本)
          * The source contributors:
                o One version from your development stream
                o One version from the target stream
                          这里虽然没说最新版本,但应该是指最新的版本。
          * The base contributor:the common ancestor of the source versions
                    base版本是上述两个版本的交叉版本,即两者公共的父版本,如图中的 B版本
          * The destionation version:the merge output ,which becomesa new version in the target stream
   2. Merge Algorithm
          * 系统只会对 nonconflicting changes进行Merge,对于 conflicting changes(比如:同一行在两个版本都进行了改动),只能进行手工Merge;
          * Merge Algorithm:(Merge nonconflicting changes)
                o 如图:
                  Full Size| Edit Diagram| Remove
                o Destination version= B + △(B,C2) + △(B,C4) = C
                          图为:C4版本文件向C2版本文件merge时的情况。



© 本文为 scmtataSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员
勇敢的心

TOP

没有图片哦,所以不是很明白。



© 本文为 zinnia_aromaSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

公司网络限制,不能往外传图片等。。。
sorry

© 本文为 scmtata 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
勇敢的心

TOP

其实很简单的原理,就是把两个不同的版本行对行之间比较,不同的话就会让你选择.空行也同样包括在内

© 本文为 nalanhui 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

只要不是在同一行有冲突 cc会帮你自动归并

© 本文为 未来世界的人 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

很久很久记得,现在不知道忘记了没有
我来描述一下吧。
对于clearcase 中单个文件的merge,都有三个基本的点,一个是from的版本,一个是to的版本,另一个是靠近from和to的一个公共的基本点。如main/2 为一个主干上的版本,现在从/main/2 上拉出了两个分之 branch1 和branch2 ,branch2上现在最新的版本是/main/branch2/5, branch1 上的最新版本是 /main/branch1/4, 现在我们从branch2 的最后一个版本归并到 branch1上的最后一个版本。这样的环境下:branch2上的版本5就是from,branch1上版本4就是to,而靠近他们最近的一个点 /main/2 就是base。
归并的算法:每一个行都和base进行比较,如过都相同该行无需归并,如from和to中只有一个与base相同,则自动保留不同的那个版本,如from和to中都与base不相同,则需要手动选择。

就这样了。不知道记错了没有,作个实验就能很好的理解了。

© 本文为 among 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
Where are we ?

TOP

branch2/5mergeg到branch1/10上,会在branch1上形成第11个节点,反过来merge会在branch2上形成第6个节点

© 本文为 gsjxuer 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

Comments below.
有两个疑问,想请各位达人们帮忙解答。
1.CC的自动merge原理是怎么样的?
如果现在是这样,有两个branch,分别为branch1和branch2,branch1上有十个结点,branch2上有五个结点。现在要把branch2/5mergeg到branch1/10上,如果是CC自动merge的,那么就会取branch2/5上的最新的内容对吗?
现在工作上出现了一个问题,就是在某一段代码行内,branch2/5是空的,但现在不确定是不是有空行,branch1/10上是有内容的,最后merge完的结果输出的文件就是空的,这应该是正确的吧?
Comment>>自动merge成功,且取了branch2/5上的版本,说明branch2/5对于共同的基版本有修改(删除了code),而branch1/10对于共同基版本没有修改,所以取了branch2/5上的版本 生成 基于branch1/10的checkout版本。

如果反过来merge,是不是就会取branch1/10上的文件了?
Comment>>结果也一样这一段code会取branch2/5上的版本,如果这个文件在branch1/10上的其它处也没有修改,那么findmerge不到任何东西。但是如果这个文件在branch1/10上的其它处有修改,会生成基于branch2/5的checkout版本。
2.CC的自动merge规则我们自己可以做改动吗?就是把自己取branch2/5的这种方式改成取branch1/10的方式,当然这只是举的一个例子。
Comment>>如果是findmerge是不可以的,这违反同步原则。但你可以通过cleartool merge -ndata to file from branch2/LATEST来画一个箭头,告诉clearcase,我已经merge了branch2/LATEST,在branch1上仍保持10版本,不过多了一个branch2/5到branch1/10的hype link。这时你再从branch2/5上findmerge,就不会find到数据,因为clearcase认为你已经从branch2/5完成了归并

转载请注明源自www.SCMLife.com,请保留版权. 本贴地址:http://bbs.scmlife.com/viewthread.php?tid=10522

© 本文为 lijianyu 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

发新话题