Jan*_*Jan 7 clearcase clearcase-ucm
将Rational ClearCase v.7.0.1.1与UCM一起使用时,我在使用ClearCase的"从流交换到备用目标"功能时遇到了问题.
想象一下,我们有一个项目集成流和两个从它派生的开发人员流A和B. 现在我在流A中更改了一个文件.我希望delevoper拥有流B能够使用我的工作而不必将文件传递到集成流,所以我从流A传递到备用目标流B.
到现在为止还挺好.我继续对文件进行另一次更改,但是流B开发人员不需要这个更改,所以我不会将它交给他.
经过一段时间,我将我的工作交付给主要的集成流.这很好,虽然我想知道为什么ClearCase将合并标记为正常的"合并"而不是"合并(平凡)" - 除了我之外没有人对文件进行了更改.
交付后,将在主集成流上创建新基线.
当开发人员B试图改变他的流时,会出现真正的问题.由于开发人员B从未对文件进行任何更改,因此我希望合并是一个简单的合并,无需进行任何交互.但是,开发人员B被迫以图形方式解决该文件上的合并冲突,让他在集成流上的基本版本,我提供给他的版本和我提供给集成流的版本之间进行选择.
在解决合并并完成rebase后,开发人员B想要执行到主集成流的交付时,会出现混淆.除了我最初交付给他的活动之外,他还被要求提供一项名为rebase _...的活动,我绝不期望提供交付.
我在这里错过了什么吗?我们是否错误地使用ClearCase或者这是一个已知的限制/错误?有没有人体验过这个功能?
在此先感谢您的帮助!
一月
实际上,当我查看版本树时,rebase期间冲突的来源是明确的:

当您重新阅读ClearCase 3-way merge的工作方式时,您会发现它需要返回版本树才能找到共同的祖先:
共同的祖先是Int/1
现在,这两个版本之间的公共线路可能已发生变化,因为:
如果在A/2和A/3中修改了公共线(来自A/1)......那么就有理由在那里进行手动合并解析!
(我现在正在测试这个)
得到它了!冲突实现了!
继续我以前的实验:
让我们在流A中创建一个新的modif:
M:\vonc_test_dat_a\adev\test>ct co -nc aFile.txt
M:\vonc_test_dat_a\adev\test>echo modif by A to B>>aFile.txt
M:\vonc_test_dat_a\adev\test>ct ci -nc aFile.txt
M:\vonc_test_dat_a\adev\test>type aFile.txt
first line done on Int
Second line from Int
Addition by A to be delivered to B first
Modification by A to be delivered to Int, B does not need it
modif by A to B
Run Code Online (Sandbox Code Playgroud)
直接交给B:
M:\vonc_test_dat_a\adev\test>ct deliver -to vonc_test_dat_b -target Test_DAT_B@\myPVob -cact -gmerge -force
Changes to be DELIVERED to non-default target stream in current project "Test_DeliverToAlternateTarget":
FROM: stream "Test_DAT_A"
TO: stream "Test_DAT_B"
Using target view: "vonc_test_dat_b".
Activities included in this operation:
activity:test_dat_a@\myPVob vonc "test_dat_a"
Trivial merge: "M:\vonc_test_dat_b\adev\test\aFile.txt" is same as base "M:\vonc_test_dat_b\adev\test\aFile.txt@@\main\Test_DAT_Int\Test_DAT_A\2".
Copying "M:\vonc_test_dat_b\adev\test\aFile.txt@@\main\Test_DAT_Int\Test_DAT_A\3" to output file.
Deliver has merged
M:\vonc_test_dat_a\adev\test>ct deliver -target Test_DAT_B@\myPVob -cact -complete -force
Run Code Online (Sandbox Code Playgroud)
(琐碎的合并)
现在让我们COMPLETELTY更改该文件的内容:
M:\vonc_test_dat_a\adev\test>ct co -nc aFile.txt
M:\vonc_test_dat_a\adev\test>echo change first line>aFile.txt
M:\vonc_test_dat_a\adev\test>ct ci -nc aFile.txt
M:\vonc_test_dat_a\adev\test>type aFile.txt
change first line
Run Code Online (Sandbox Code Playgroud)
交付给Int后,在交付后立即提供新基线:
M:\vonc_test_dat_a\adev\test>ct deliver -force
M:\vonc_test_dat_a\adev\test>ct deliver -force -complete
M:\vonc_test_dat_a\adev\test>ct mkbl -comp ADV_TST@\myPVob -view vonc_test_dat_int TST_DAT1.2.0
Run Code Online (Sandbox Code Playgroud)
(另一个微不足道的合并)
来自B的变基怎么样?
M:\vonc_test_dat_b\adev\test>ct rebase -bas TST_DAT1.2.0
Advancing to baseline "TST_DAT1.2.0" of component "ADV_TST"
Updating rebase view's config spec...
Creating integration activity...
Setting integration activity...
Merging files...
Checked out "M:\vonc_test_dat_b\adev\test\aFile.txt" from version "\main\Test_DAT_Int\Test_DAT_B\3".
Attached activity:
activity:rebase.Test_DAT_B.20090707.163300@\myPVob "rebase Test_DAT_B on 07/07/09 4:33:00 PM."
Needs Merge "M:\vonc_test_dat_b\adev\test\aFile.txt" [to \main\Test_DAT_Int\Test_DAT_B\CHECKEDOUT from \main\Test_DAT_Int\4 base \main\T
est_DAT_Int\3]
********************************
<<< file 1: M:\vonc_test_dat_b\adev\test\aFile.txt@@\main\Test_DAT_Int\3
>>> file 2: M:\vonc_test_dat_b\adev\test\aFile.txt@@\main\Test_DAT_Int\4
>>> file 3: M:\vonc_test_dat_b\adev\test\aFile.txt
********************************
---------[changed 1-4 file 1]----------|---------[changed to 1 file 2]---------
first line done on Int | change first line
Second line from Int |-
Addition by A to be delivered to B fir+|
Modification by A to be delivered to I+|
-|
*** Automatic: Applying CHANGE from file 2 [line 1]
============
============
-----------[after 4 file 1]------------|----------[inserted 5 file 3]----------
-| modif by A to B
|-
Do you want the INSERTION made in file 3? [yes] no
============
============
Output of merge is in "M:\vonc_test_dat_b\adev\test\aFile.txt".
Recorded merge of "M:\vonc_test_dat_b\adev\test\aFile.txt".
Build and test are necessary to ensure that any merges and configuration changes were completed correctly.
When build and test are confirmed, run "cleartool rebase -complete".
Run Code Online (Sandbox Code Playgroud)
你有它:来自共同祖先的两个不相容的变化之间的一个很好的冲突.
这是用于说明的图片:

.
| 归档时间: |
|
| 查看次数: |
6813 次 |
| 最近记录: |