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

How to avoid duplication of code using ClearCase UCM components

我以为我在阅读了这里的所有帖子后理解了 ClearCase UCM 中组件的概念,但是,我很确定我遗漏了什么。

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

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

如何将一个组件设置为由两个项目共享而不使其代码重复?

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

我想我正在寻找的是一个项目作为该组件的 "producer" 而其他项目作为该组件的 "consumers"。

UCM 基线是一种引用 文件(UCM 组件)

精确版本的方法

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

当您交付基线项目间时:

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

when I make a change to a file in shared component C in project A, deliver it to project A's Integration stream, create a baseline, and then proceed to deliver that baseline to project's B's Development stream followed by a delivery to project B's Integration stream and do a version tree of that file, I see 4 versions of the same file that are all identical.

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

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