【问题标题】:How to remove a Baseline from a clearcase stream?如何从 clearcase 流中删除基线?
【发布时间】:2026-02-12 21:00:01
【问题描述】:

我在使用 Clearcase 时遇到问题。如果我不清楚或多余,我会提前道歉,因为我对这个 VCS 很陌生,主要来自 Git 背景,我可能不知道如何正确搜索我的问题。

我们每隔几个月就有一个新版本的应用程序(与 CC 无关,业务方面),我们每次都会为每个版本创建一个新的 VOB 和流。我们有一个通用流,我们在其中交付完成版本的最后基线,添加新基线,然后将通用流的内容导出到新的 VOB 和流。

我的问题是,由于仓促,我实际上交付到通用流中,而不是最后一个基线,而是前一个基线。最重要的是,我为通用流添加了一个全新的基线。

我需要能够将我们之前商业版本应用程序的最后一个基线交付到我的通用流中。

(我主要是在操作 Clearcase 项目浏览器,因为我真的不知道 cleartool 命令。我尝试使用一些 CLI 解决方案但无法做到,但可能与我们的 Clearcase 服务器有关)

为了做到这一点,我尝试了:

  • 删除交付活动。但是当我尝试这样做时出现错误:“错误:无法删除其变更集中具有版本的活动”。我试图绕过这个,用谷歌帮助自己,但没能做到。恐怕这是正常的 Clearcase 行为,不能这样追求。
  • 正确地重新交付我们的上一个商业版本,但由于我在通用流中新近匆忙创建的基线,它不起作用。

我会接受任何线索,指示线索,因为我无法找到如何正确推进这件事。

提前谢谢你。

【问题讨论】:

标签: clearcase


【解决方案1】:

这样更简单:

  • 向通用流提供正确的内容(在错误内容之上)并设置新的基线
  • 将之前的基线重命名为“请勿使用”名称
  • cleartool lock -obsolete 基线,使其不可见(而不是试图删除它)

这样,您可以恢复每个版本的连续交付/导入,而忘记错误的。

【讨论】:

  • 非常感谢,我做到了。我的问题现在得到了纠正。
【解决方案2】:

如果您在该流中创建的基线是最新的基线,并且尚未被另一个流使用(拉入变基或交付到另一个流),您应该能够将其删除。

在任何情况下,由于您的计划是通过将在同一父流中创建的更新基线传送到此“通用”流来向前推进,因此您只需将正确的基线传送到此流,创建一个新的基线,然后可选择锁定前一个基线。

您可能需要了解的几个 UCM 陷阱:

  • 如果您将基线传送到另一个流,则源基线将永久不可删除。
  • 所有交付操作交付基线。如果您不创建基线,则交付操作会创建一个“deliverbl”基线来交付。
  • 删除流不是简单的就是不可能的。
  • 通常不可能删除已完成开发工作的项目。

为了将来参考,删除不在基线中的活动:

  • 在命令行上描述活动以获取版本列表。您可能希望将输出重定向到文件中,以便您可以更轻松地将版本信息复制并粘贴到下一步中。要描述活动,您需要使用“cleartool describe activity:{id}@{project VOB tag}
  • 使用“cleartool rmver -xhlink {version ID}”删除更改集中的所有版本
  • 删除活动。由于交付显然已完成,因此不应设置活动。

【讨论】:

  • 非常感谢您的意见!