Base ClearCase-防止从特定分支合并

时间:2015-10-14 17:55:58

标签: clearcase clearcase-ucm cleartool clearcase-remote-client clearcase-automation

有人可以指导我以正确和最好的方式处理这个问题吗?我有两个活动的dev分支 - 在同一个代码库中被修改,一个集成分支在一个基本的clearcase环境中。但我想阻止从分支2到集成分支的代码升级,并允许仅从分支1到集成分支的合并。请指教。

2 个答案:

答案 0 :(得分:0)

如果有不同的用户从开发流传递到集成流,您可以(使用cleartool lock -nusers ... stream:aStream@\vobs\apvob):

  • 锁定devstream1dev1以外的所有内容(这样您确定dev1只适用于devstream1),
  • 锁定devstream2dev2以外的所有内容(这样您确定dev2只适用于devstream2),
  • 锁定intstream除了您和dev1之外的所有人(只有dev1可以传送到intstream
  

如果我或dev1错误地将代码从devstream2提升为intstream

,该怎么办?

然后您需要preop deliver_start触发器(mktrtype) 该触发器将控制触发器中的流的OID,因为它们是不可变的:cleartool describe -fmt %On <stream-name>
如果其中一个是devstream2的那个,则触发器将错误地退出,拒绝传递。

答案 1 :(得分:0)

由于它听起来像你使用Base ClearCase,你可以使用preop'checkin'触发器。触发器执行的脚本将查看要检入的签出版本是否具有任何传入的Merge超链接。如果是,脚本可以验证超链接的“从”端是来自branch1,如果是,则退出0状态。如果它来自任何其他分支,脚本将打印描述性错误消息并以非零状态退出(从而阻止签入)。

创建触发器类型时,可以将触发器的范围限制为集成分支(我在下面的示例中称为“my_int_branch”),这有助于提高性能。命令行可能如下所示:

% cleartool mktrtype -element -all -preop checkin -brtype my_int_branch -exec path_to_allow_branch1_merge_script  allow_branch1_merge

在脚本中,您可以使用以下内容获取附加到签出版本的Merge超链接:

cleartool describe -fmt '%[hlink:Merge]p\n' $CLEARCASE_PN

如果有任何传入的Merge超链接,每个超链接会得到一行,如下所示:

"Merge@2877@/vobs/myvob" <- "/vobs/myvob/mydir/file.c@@/main/branch1/3"

然后脚本必须验证“from”版本的外部分支是“branch1”。