有人可以指导我以正确和最好的方式处理这个问题吗?我有两个活动的dev分支 - 在同一个代码库中被修改,一个集成分支在一个基本的clearcase环境中。但我想阻止从分支2到集成分支的代码升级,并允许仅从分支1到集成分支的合并。请指教。
答案 0 :(得分:0)
如果有不同的用户从开发流传递到集成流,您可以(使用cleartool lock -nusers ... stream:aStream@\vobs\apvob
):
devstream1
除dev1
以外的所有内容(这样您确定dev1
只适用于devstream1
),devstream2
除dev2
以外的所有内容(这样您确定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”。