我正在尝试创建一个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)&&!version(\main\${side.branch}\0)${history.check}" />
<arg value="-exec" />
<arg value="cleartool mklabel -replace ${label.name} %CLEARCASE_XPN%" />
</exec>
</target>
它似乎可以用于测试。
答案 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)&&!version(\main\${side.branch}\0)${history.check}" />
<arg value="-exec" />
<arg value="cleartool mklabel -replace ${label.name} %CLEARCASE_XPN%" />
</exec>