2014-11-05 37 views
1

我想制作一个Clearcase配置规范,当该文件有2个标签时,我将根据更大的版本号选择一个文件。clearcase config spec选择两个标签的更大版本

实施例: file1.c; rev 1 ---> PR438 file1.c; rev 2 file1.c; rev 3 ---> PR433

的 “基本” 配置规范:

element * PR438 element * PR433

会选择file1.c中; rev1,因为该标签首先在配置规范中指定。

我想要的是选择file1.c; rev 3,而不必分析每个文件的标签顺序以正确订购配置规格。

基本上,我想要一条规则说选择PR438和PR433,如果一个文件同时具有两个标签,请使用修订号最高的文件。

+0

为了提供额外的上下文,我的情况是:我或多或少地继承了现有Clearcase设置的现有开发环境。已经使用元数据标签进行了许多修改,以指示它们与哪个更改跟踪器相关联。我正在尝试在候选视图中选择一些更改以测试更改。我想在配置规范中指定半打左右的标签集,但是我担心一些更改可能发生在同一个文件上,我想确保为任何具有多个文件的文件选择最新版本的文件标签。 – 2014-11-05 16:19:48

回答

0

基本上,我想要一个规则说选择PR438和PR433,如果一个文件同时具有两个标签,请使用修订版本号最高的文件。

这不是how a config spec uses selection rules

如果这些标签的命名惯例已正确完成,则最高版本(最新版本)始终为PR438
这意味着首先选择PR438,然后,作为后备,选择PR433就足够了。

你可以尝试的是选择具有两个标签的第一个版本。
即使config spec syntax不指定AND或OR运算,这将是:

element * {lbtype(PR438)&&lbtype(PR433)} 
+0

当规则匹配同一文件的多个版本时,我看不到选择最新版本的行为。即使在您链接的参考文献中,它也会声明“在每个元素的版本树中搜索与配置规范中的第一个规则相匹配的第一个版本”。这是我看到的行为。我看到我指定版本标签的顺序,其中显示了文件修订版本。 – 2014-11-05 15:51:53

+0

我一直在使用查询来根据IBM参考站点上的示例选择文件,但是我担心查询返回多个版本,这是一个错误条件。例如,元素* {lbtype(PR438)|| lbtype(PR433)}这似乎只有在这些标签不显示在同一个文件上时才起作用。 – 2014-11-05 15:56:44

+0

你试过'element * {lbtype_sub(PR438)|| lbtype_sub(PR433)}'吗?或'元素* {lbtype(PR438)&& lbtype(PR433)'(使用'&&'而不是'||') – VonC 2014-11-05 16:12:41

0

这是忌讳的。在这种情况下,如果NEWER标签附加到旧版本,则不能使用标签类型的年龄来解决问题。你在“创建文件特定的configspecs”领土。

所以,你必须先从事情的输出是这样的:

cleartool find -all -version "lbtype(PR438) || lbtype(PR433)" -print 

从那里,你将不得不

  1. 解析它找到所有重复的元素名称(剥去版本ID)
  2. 取出较新版本的重复文件
  3. 将这些版本从SECOND行开始,根据标签设置一个configspec(除非你可以不检出这些文件,在这种情况下,“element * CHECKEDOUT”行不是那么重要。

既然您已经走得很远,那么您也可以完全基于查找输出构建configspec。但是这会变得笨拙和难以理解。