3

例如,而不是编写以下内容:

element * .../my_branch_01/LATEST
element * .../base_branch/LATEST -mkbranch my_branch_01

我想写这样的东西:

MY_BRANCH=my_branch_01
element * .../%MY_BRANCH%/LATEST
element * .../base_branch/LATEST -mkbranch %MY_BRANCH%

这甚至可能吗?什么是正确的语法?

4

2 回答 2

3

在 ClearCase 中执行此操作的唯一本地方法是在config-spec中使用属性

根据版本选择器规则,您可以制定“通过查询选择”规则,例如基于属性:

element * ...{MY_ATTRIBUTE_NAME=="aValue"}

LATEST将在任何具有属性“ MY_ATTRIBUTE_NAME”的分支上选择版本,其中包含“ aValue”。

这意味着您需要更改旧分支上的属性值,将其放在新分支上,cleartool setcs再次''您的视图,并且您应该具有基于新版本选择的新内容。

不是很直接,但它可以工作,除了 mkbranch 部分(需要固定名称)。


关于GeekCyclist 的回答,有几点评论:

包含通用配置规范的解决方案适用于 Base ClearCase 解决方案,但是:

  • 需要由所有相关开发人员共享
  • setcs确实需要 Ccuses view_server 刷新其缓存并重新评估当前配置规范,该配置规范存储在视图存储目录中的文件 config_spec 中这包括:
    • 使用非绝对规范评估时间规则(例如,现在、星期二)
    • 重新评估 –config 规则,可能选择与以前不同的派生对象
    • 重新读取包含规则中命名的文件
  • 当通用包含的配置规范文件更改时,需要通知所有其他开发人员(ClearCase 中不包含本机通知)

如果您需要一个“环境”(即一个“视图”或工作区)和一个可变内容(取决于不同的分支),您需要定义一个指向不同视图的符号链接(或 windows subst)(每个视图都有他们自己的配置规范)

这样,您只需更改链接(或替换的路径)即可更改与给定固定路径关联的配置规范。

于 2009-03-25T05:01:42.427 回答
1

自从我在 ClearCase 工作(我们切换到 Subversion)已经有一段时间了,但如果我没记错的话,没有办法在 ClearCase 本地执行此操作。

您可以使用或编写一个脚本生成器来创建您的规范文件,然后将其包含在实际规范中:

element * CHECKEDOUT
include scripted_file_output

然后运行

cleartool setcs -current

这种方法的问题在于,我认为无论何时更改 MY_BRANCH 的值,都需要重新生成包含规范,并且 cleartool setcs 会运行。

于 2009-03-25T04:31:08.553 回答