我有一个项目,我需要在动态视图上执行许多操作.如果这些操作中的任何一个失败,或者程序中出现了一些错误,我需要能够撤销提交.
直接的方式似乎是简单地将命令放入队列中,然后,当我的程序完成处理时,执行队列.但是,我担心一些异常事件会中断提交并导致服务器上的数据集不一致.
或者,换句话说,我正在寻找一种在Clearcase动态视图中创建svn样式的"变更集"的方法.我正在使用的脚本语言是Perl,如果这很重要的话.
想法?
ClearCase中的操作的原子性在文件级别,没有严格等同的svn变更集(即"修订版").
在ClearCase中变更集的最接近的事是活性(UCM)的概念,或标签上的文件的收集组(一个UCM基线是实际上更接近,因为它代表的标签,你不能动,在预先定义的一套文件 - UCM组件 - )
现在,UCM与否,我建议:
如果遇到问题,当分支仍处于锁定状态时,您可以ct rmver添加版本.(注意:要小心使用:a rmver不能撤消)
注意1:如果你不在UCM工作,你将必须记录所有签到的版本,以便能够他们
注2:当我说"锁定分支"时,我的意思当然是:"锁定除了你以外的所有人"(-nusers yourLogin).这样,只有你可以制作签到(适用于你正在工作的分支(主要或另一个)的LATEST中的所有文件.
使用这种方法的问题是客户端(在分支上的LATEST中具有动态视图的其他用户)将在原子事务期间看到的问题.
由于这些是动态视图,因此当这些文件逐个签入时,它们将看到签入的文件.这可能不太好,特别是如果有200个文件,并且所有进程都需要超过一分钟.
一种解决方案是让这些客户端视图将其配置规范设置为以下内容:
element * .../myBranch/FREEZED_LATEST
element * .../myBranch/LATEST
Run Code Online (Sandbox Code Playgroud)
如果您没有进行原子变更集提交,则标签FREEZED_LATEST不存在,并且所有客户端视图都应显示LATEST.所有人都可以立即看到任何签到.
但在原子提交期间,您可以:
FREEZED_LATEST(所有客户端继续查看原子操作产生的新LATEST,并且可以制作带有自己的一些结帐的新版本)