在集成流Int中,A1,A2,A3是活动,B1是包含A1,A2,A3活动的基线。
(Int Stream)----- A1 ------ A2 ------------------ A3 ------ [B1] - -------------->
我们将部署新版软件,我们的项目经理说他没有 希望在此版本的软件中包含A2活动变更集。
我们可以在ClearCase中创建仅包含A1和A3活动的新基线B2吗?
(Int Stream)----- A1 ------------------------ A3 ------ [B2] --- -------------> ?
答案 0 :(得分:1)
否:由于B1存在,所有活动都由一个共同的“时间轴”“链接”,ClearCase会要求您也包括A2。
一种可能的解决方案是创建一个子流,并制作一个只有A1和A3的findmerge
(a findmerge
是非UCM合并,仍然可以将UCM活动列表作为输入)
子流的基金基线应该是最后一个基线(在IntStream上生成)而不是,包括A1,A2和A3。
然后:
ct findmerge activity:A1@\pvob activity:A3@\pvob -fcsets -c "report for delivery" -merge -gmerge
该子流扮演“发布流”或“合并流”的角色,这是一个包含构建最终版本所需的全部内容的流。
父流(IntStream)继续发挥其整合所有开发工作(来自其他子流)的作用
注意:
ct
”代表“cleartool”:它是alias
(Unix)或doskey
(别名的Windows版本:doskey ct=cleartool $*
)活动依赖性:在这种情况下,A3可能会有一些基于A2版本的版本。
findmerge
命令仅使用要合并的changeset
(版本列表)的活动:
更改集中列出的每个版本都将成为合并操作中的from-version。与往常一样,to-version是您视图中的版本。
A3包括A2中所做的更改,最终结果将包括A1,A2和A3更改,除非A1和A3更改为“并发”(类似行上的更改):在这种情况下,需要进行非平凡的合并要进行。
由于您不希望进行A2更改,正如您在评论中所提到的,您需要使用perl实用程序脚本findmerge
完成cset.pl
操作:
ccperl cset.pl -undo A2
它将执行“负合并”(或“减法合并”),删除A2的任何更改。