是否可以在明文中访问配置规范中的环境变量。
我有这个代码:
element /folder/... /main/current_branch/LATEST
我希望设置我的开发,以便我可以通过简单地设置一些环境变量来更新分支。我想要这样的东西可以工作吗?
element /folder/... /main/$current_branch/LATEST
其中 $current_branch 应该返回该环境变量中设置的当前分支。
不,我从未见过基于环境变量的配置规范。
我查看了config_spec 手册页,编写了配置规范和“配置规范的工作原理”:没有人提到这种可能性。
对于动态视图,我看到脚本根据环境变量动态修改配置规范,使用cleartool setcs
(因为使用动态视图刷新几乎是瞬时的)。
注意:不要忘记您current_branch
可能并不总是直接从/main
. 我更喜欢使用以下语法:
element /folder/... .../my_branch/LATEST
为了选择my_branch
,而不依赖于其直接的“父”分支(即使在基本 ClearCase 中,没有真正的“父”分支)。
AFAIK,这是不可能的。
我处理这个问题的方法是拥有我(自动)填写的模板。但我也使用单独的视图;视图是一次性的,我会定期重建我的视图(每周,每两周,有时一天几次,如果我需要确保构建的清洁度)。
我会向您展示我的脚本,但它们的数量很多,它们彼此之间以及与我们拥有的工作环境相当错综复杂地交织在一起(多个但重叠的 VOB 用于许多主要版本中的每一个)产品,其中包含 CM 提供的配置规范的某些部分和自定义序言,以识别我正在处理的内容)。我们已经使用 ClearCase 大约 18 年了。
最终结果是一个错误修复分支的配置规范,如下所示:
# @(#)$Id:243260.jleffler.toru.cs,v 1.1 2011/08/30 15:23:02 jleffler Exp $
#
# Config Spec for Bug 243260 - Blah, blah, blah, blah
element * CHECKEDOUT
element * .../TEMP.243260.jleffler/LATEST
mkbranch -override TEMP.243260.jleffler
#time 26-Jul-2009.00:00:00UTC-08:00
element /vobs/main_vob/... /main/LATEST
element /vobs/other_vob/... dist.1.00 -nocheckout
include /atria/cspecs/product/1.23/product-1.23.4
#include /atria/cspecs/product/1.16/product-1.16.8
element * /main/LATEST
注释掉的时间戳和包罗万象的规则之间的位由 CM 提供。时间戳上方的位是分支的自定义(TEMP.243260.jleffler - 将其标识为临时分支,它的错误修复以及谁在做这项工作)。该模板实际上列出了来自 CM 的大约 10 个不同的配置规范,我只是删除了不相关的那些。视图名称基于错误编号、我的登录名和创建它的机器 ( toru
)。我已经伪装了其余的大部分内容,但它基于我今天早些时候创建的错误 cspec。我的bug.view
脚本获取错误编号、描述、视图工作存储的路径以及我需要创建分支的 VOB,然后自动设置所有内容。(而且我仍然很古老,可以使用 RCS 来控制我的 cspecs。)
我的一些观点持续了很长时间(按名称)。例如,当前版本参考视图将在该版本受支持的 5 年内有效。在此期间它将被重建数百次,但名称保持不变:prod-1.23-ref.jleffler.toru
. 因此,随着时间的推移,cspec 会发生变化,因为需要进行不同的工作,但基本的 cspec 是三行 - CHECKEDOUT,包括标准 CM 提供的配置文件和 LATEST。