Ant脚本将Clearcase标签添加到没有标签的元素

时间:2012-08-10 20:03:26

标签: ant clearcase

我正在尝试创建一个Ant脚本,该脚本将在ClearCase中创建标签,然后将标签应用于最新版本没有标签的任何文件的最新版本。

我用它来创建标签:

<ccmklbtype typename="${label.name}" failonerr="false" 
 ordinary="true" comment="${label.comment}"/>

当我用它来添加标签时:

<ccmklabel viewpath="${view.path}" comment="${label.comment}" recurse="true"
 typename="${label.name}" replace="false" version="\main\${side.branch}\LATEST"/>

当然,将标签添加到视图路径中的所有内容。如果项目在最新版本上没有标签,我希望的行为是仅添加标签。

我可以通过命令提示符执行所需操作,但我正在尝试查看是否可以通过Ant完成。

有没有人有任何想法?

看起来似乎没有办法只标记一些没有名字的东西。相反,我将其设置为在ANT中使用一个exec块,如果它没有使用之前使用过的标签之一进行标记,则会标记任何内容:

<target name="add_labels" description="Look for LATEST code that does not have a previous version label already on it.  Skip the 0 generation as that is brought in from a previous release.">
<exec executable="cleartool" dir="${view.path}">
<arg value="find" />
<arg value="." />
<arg value="-ver" />
<arg value="version(\main\${side.branch}\LATEST)&amp;&amp;!version(\main\${side.branch}\0)${history.check}" />
<arg value="-exec" />
<arg value="cleartool mklabel -replace ${label.name} %CLEARCASE_XPN%" />
</exec>
</target>

它似乎可以用于测试。

1 个答案:

答案 0 :(得分:2)

查看man page of ccmklabel,您会看到:

  

replace bool
  如果true,则允许在同一分支上替换相同类型的标签   默认值为false

因此,对于replace=true,如果文件在最新版本上没有标签,则会将其放置(或移至)LATEST版本。


OP ruminator的情况下,如果版本中没有标签,他只想添加标签。

可能有两种方法:

  • ccmklabel在视图中已经只选择了要标记的版本 很难做到,因为配置规范中唯一可用的 version selector \main\${side.branch}\'{!lbtype(MY_TEST)},它选择了最后一个未标记为“MY_TEST”的版本(并且不完全符合初始选择标准)

  • 不要在ant脚本中使用ccmklabel,并直接调用insteald一个cleartool find指令(更精确,可以组合比视图配置规范更多的版本选择器)。
    这就是OP ruminator在他的问题更新中所说明的内容:

查找查询侧重于LATEST版本没有正确标签:

<exec executable="cleartool" dir="${view.path}">
  <arg value="find" />
  <arg value="." />
  <arg value="-ver" />
  <arg value="version(\main\${side.branch}\LATEST)&amp;&amp;!version(\main\${side.branch}\0)${history.check}" />
  <arg value="-exec" />
  <arg value="cleartool mklabel -replace ${label.name} %CLEARCASE_XPN%" />
</exec>