我知道这个目标的一个尴尬解决方案是:
ct ls
获取文件的完整版本信息但我想ClearCase应该有一个“内置”解决方案来完成这项任务,而不需要任何外部脚本的支持。
如果您碰巧知道任务的“内置”解决方案,请帮助我 提前谢谢。
答案 0 :(得分:6)
fmt_ccase
包含各种ClearCase元素的所有格式字符串。
对于文件的版本,您可以:
cleartool descr -fmt "%l\n" /path/to/a/version
%l
标签:对于版本,所有附加标签;否则为空字符串。
标签以逗号分隔的列表输出,括在括号中。
每个逗号后面都有一个<SPACE>
个字符。<强>变体强>:
%Cl
最大标签:使用max-field-width参数指定要显示的最大标签数(请参阅Specifying field width)。
如果有更多标签,则会在输出中附加“...
” 如果未指定max-field-width,则最大默认值为3.%Nl
无逗号:禁止标签列表输出中的括号和逗号;
仅使用空格分隔标签。
所以结果可能是:
Labels: (Rel3.1C, Rel3.1D, Rel3.1E)
Labels without commas or parens: Rel3.1C Rel3.1D Rel3.1E
在这两种情况下,您仍然需要解析结果,但至少输出只能包含 标签,如:
Rel3.1C Rel3.1D Rel3.1E
onaclov2000添加(来自评论):
唯一的问题是你要抓住文件特定版本的标签 鉴于分支等可以存在,我们需要能够在文件上获取所有标签 如果您使用版本树图形并选择工具 - &gt; “找到”您可以看到 ALL 附加到该文件的标签 在cleartool中是否有一个通用命令会返回“locate”或“contents”的结果?
单击“标签名称”时,lsvtree
(图形版本树)会显示视图当前所见元素的所有版本的标签
话虽如此,似乎没有“内置”解决方案,并涉及一些解析:
例如(比OP版本略短但仍基于cleartool ls
):
ct ls -l addon.xml@@|grep version|gawk "{gsub(/^version.*@@\\\\/,\"\",$0) ; gsub(/ \ [.*/,\"\",$0); print $0}"
(GnuWin32语法)
或仅使用动态视图:
cd m:/myView/path/to/addon.xml@@
# list all files, not directories: the files are the labels
dir /B /A-D
答案 1 :(得分:3)
IBM文章“Additional examples of the cleartool find command”是查找查询的绝佳来源
要扩展VonC中his answer提及的“ lsvtree
”位,您可以:
查找包含任何标签的所有元素:
视窗:
cleartool find . -type f -exec "cleartool lsvtree -a %CLEARCASE_PN%" | findstr
"("
./hello.c@@/main/1 (LABEL100, LABEL99, LABEL98, LABEL97)
./foo.xml@@/main/BR1/1 (REL2)
./bar.o@@/main/1 (REL1)
UNIX / Linux的:
cleartool find . -type f -exec 'cleartool lsvtree -a $CLEARCASE_PN' | grep "("
./hello.c@@/main/1 (LABEL100, LABEL99, LABEL98, LABEL97)
./foo.xml@@/main/BR1/1 (REL2)
./bar.o@@/main/1 (REL1)
它只查找当前在视图中选择的版本的标签,但您可以重复使用lsvtree
部分来grep带有标签的文件的所有版本。