如何在 clearcase 中撤消分支上的合并?

How do I undo mergeouts on a branch in clearcase?

背景

我处于这样一种情况,为了干净地提升代码,具有一定数量的视图必须以协调的方式分支:

/some/dir/here@@/main/dev/view_dev__456_textDescription
/some/dir/here/file.txt@@/main/dev/view_dev__456_textDescription
/some/dir/here@@/main/dev/prod1/view_prod1_dev__456_textDescription
/some/dir/here/file.txt@@/main/dev/prod1/view_prod1_dev__456_textDescription

某个产品的每个视图都必须从其产品分支中分支出来。

问题

我不小心创建了一个特定于产品的视图,但不在开发分支中。下面是我现在的情况:

/some/dir/here@@/main/dev/view_dev__456_textDescription
/some/dir/here/file.txt@@/main/dev/view_dev__456_textDescription
/some/dir/here@@/main/dev/view_prod1_dev__456_textDescription <-- The erroneous branch
/some/dir/here/file.txt@@/main/dev/prod1/view_prod1_dev__456_textDescription

尝试的解决方案

我试过这个命令来摆脱错误的分支:

ct rmbranch /some/dir/here@@/main/dev/view_prod1_dev__456_textDescription

但是我得到了这个错误:

...
Checking for mergeouts on branch [view_prod1_dev__456_textDescription] ...
ERROR: Cannot delete a WI branch that has mergeouts
cleartool: Warning: Trigger "TRG_PRE_RMBRANCH" has refused to let rmbranch proceed.
cleartool: Error: Unable to remove branch "/some/dir/here@@/main/dev/view_prod1_dev__456_textDescription"

根据错误,我需要删除该分支的合并。因此我的问题...

问题

如何撤消特定 clearcase 分支的合并?

这里假设是基本的 ClearCase,你对一些文件做一个 ct lstree --graph 看看它们是否被合并到其他分支版本。

即:检查是否看到红色箭头,如“Find all unmerged files/elements in ClearCase”中所示。
该答案包括一个 cleartool find,它将为您提供两个分支之间的所有合并元素。

对于该合并中涉及的每个元素版本(再次假设基本 ClearCase),您可以:

  • describe that version 并找到来自它的合并超链接。
  • 执行 cleartool rmhlink Merge@xxxxx@/vobs/yourvob,删除所述超链接。

一旦不再有来自 view_prod1_dev__456_textDescription 的合并超链接,TRG_PRE_RMBRANCH 不应再阻止 rmbranch

参见 cleartool rmhlink, and the previous question: "”。