如何避免使用ClearCase UCM组件重复代码

时间:2015-12-18 00:39:01

标签: clearcase-ucm

我认为在阅读了这里的所有帖子之后我理解了ClearCase UCM中组件的概念,但是,我很确定我错过了一些东西。

我创建了两个项目A和B,每个项目分别包含一个组件Comp_A和Comp_B,它们每个都包含一个共享组件Comp_C以及一个无根组件Comp_D来包含复合基线。

一切正常。但是,这如何防止代码重复?在对项目A中的共享组件进行更改时,需要传递该更改(使用基线的项目间交付),以使其在项目B中可见,这意味着共享组件的所有文件都具有对它们所做的更改最终会在项目的开发和集成流中重复出现。

如何设置一个组件以供两个项目共享而不会使其代码重复?

示例:当我对项目A中的共享组件C中的文件进行更改时,将其传递到项目A的Integration流,创建基线,然后继续将该基线传递到项目的B的开发流,然后传递到项目B的集成流并执行该文件的版本树,我看到同一文件的4个版本都是相同的。当然,我们仍然在谈论相同的元素,但是没有一种方法可以让两个项目共享一个组件(只能在一个组件中修改)而不会发生这种情况吗?

我认为我正在寻找的是一个项目成为“生产者”和其他项目成为该组件的“消费者”。

1 个答案:

答案 0 :(得分:1)

UCM Baseline是一种引用 set 文件(UCM组件)的精确版本的方法

如果在项目A /组件C中创建新基线,则不会影响项目B,项目B继续引用其自己的组件C的初始版本(可能有自己的更改)

当您交付基线项目间时:

  • 如果项目B中的组件C没有更改,则最终引用该基线标签标记的文件的完全相同版本:没有重复。
  • 或者您最终将项目A中的更改合并到项目B的组件C中,项目B具有自己的新版本。同样,没有重复,只需要更改报告,以便将它们集成到给定组件的另一个开发流中:可能存在需要解决的合并冲突。
  

当我对项目A中的共享组件C中的文件进行更改时,将其传递到项目A的集成流,创建基线,然后继续将该基线传递到项目的B的开发流,然后交付到项目B的集成流并执行该文件的版本树,我看到同一文件的4个版本都完全相同。

避免这种情况的一种方法是:

  • 在项目A或B中引用C作为不可修改的UCM组件,这意味着您可以在任何Stream中随意更改和更改其基线,而无需提供C。
  • 在专用项目C中更改C,其中C是可修改的,并且您在其中创建C基线(然后您可以在项目A或B中进行重新定义,无需项目间交付)