是否可以以明文形式访问配置规范中的环境变量。
我有这段代码:
element /folder/... /main/current_branch/LATEST
我希望设置我的开发,以便我可以通过简单地设置一些envvars来更新分支。我希望这样的事情可以工作吗?
element /folder/... /main/$current_branch/LATEST
其中$ current_branch应返回该环境变量中的当前分支集。
答案 0 :(得分:2)
不,我从未见过基于环境变量的配置规范 我查看了config_spec man page,writing config spec和“How config spec works”:没有人提到这种可能性。
对于动态视图,我看到脚本使用cleartool setcs
基于环境变量动态修改配置规范(因为刷新将近乎动态视图)。
注意:不要忘记您的current_branch
可能并非总是直接来自/main
。我更喜欢使用语法:
element /folder/... .../my_branch/LATEST
为了选择my_branch
,而不依赖于它的直接“父”分支(即使在基础ClearCase中,there is no real "parent" branch)。
答案 1 :(得分:2)
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
)。我伪装了其余的大部分内容,但它是基于我今天早些时候创建的一个bug cspec。我的bug.view
脚本获取了错误号,描述,查看工作存储的路径,以及我需要创建分支的VOB,然后自动设置了所有内容。 (而且我仍然过时地使用RCS来控制我的cspec。)
我的一些观点持续了很长时间(按名称)。例如,当前版本参考视图将在支持发行版的5年以上存续。在此期间它将重建数百次,但名称保持不变:prod-1.23-ref.jleffler.toru
。所以cspec会随着时间的推移而改变,因为需要不同的工作,但基本的cspec是三行 - CHECKEDOUT,包括标准的CM提供的配置文件和LATEST。