hlovdal 的回答说明,在这种情况下,您必须找到比您需要的更多的元素,然后过滤它们(尽管有所有ClearCase 查找功能)。
笔记:
cleartool find . -type f -element 'lbtype_sub(LBL_A)' -print
可以直接给你元素(而不是在这种情况下可能不感兴趣的版本)。您可以找到带有-version
格式指令的版本,如下所述。
在fmt_ccase的帮助下,您可以定制输出以准确获取您的 perl 脚本需要继续执行的操作:
cleartool find . -type f -element 'lbtype_sub(LBL_A)' -exec 'cleartool describe -fmt "%En %Cl\n" \"$CLEARCASE_XPN\"' | grep -v ","
-fmt "%En %l\n"
将显示元素的完整路径(而不是版本:/a/b/myFile@@/main/myVersion)=> /a/b/myFile'. the '
\n` 确保每行一个结果。
-version
并-fmt "%n %l\n"
会显示版本
\"$CLEARCASE_XPN\"
: 发现的版本的扩展路径周围的双引号确保名称中包含空格的文件仍然有效。
grep -v ","
: 如果有逗号,则表示“多个标签”
%Cl
:避免显示所有标签列表。反正如果不止一个,你就没兴趣了!
因此,为了找到确切的版本:
cleartool find . -type f -version 'lbtype_sub(LBL_A)' -exec 'cleartool describe -fmt "%n %Cl\n" \"$CLEARCASE_XPN\"' | grep -v ","|awk '{sub(/ \(.*/,"");print}'
注意:
以上适用于 unix 语法。Windows 语法将是:
cleartool find . -type f -element "lbtype(LBL_A)" -exec "cleartool describe -fmt \"%n %Cl\n\" \"%CLEARCASE_XPN%\"" | grep -v "," | gawk "{gsub(/ \(.*,"");print}"
,这将列出只有一个(正确)标签的文件版本。
awk '{sub(/ \(.*/,"");print}'
将“ myFile@@/main/myVersion (LBL_A)
”转换为“myFile@@/main/myVersion”