我知道一个笨拙的解决方案:
如果你知道这个任务的“内置”解决方案,请帮帮我。谢谢!
- 首先使用
ct ls
获取文件的完整版本信息 - 然后将版本信息传递给解析脚本,以实际获取文件的标签。
如果你知道这个任务的“内置”解决方案,请帮帮我。谢谢!
ct ls
获取文件的完整版本信息fmt_ccase
包含了各种ClearCase元素的格式字符串。
对于一个文件版本,您可以:
cleartool descr -fmt "%l\n" /path/to/a/version
%l
标签:对于版本,输出所有附加的标签;否则为空字符串。
标签以逗号分隔的列表形式输出,并用括号括起来。
每个逗号后面跟着一个<SPACE>
字符。变量:
%Cl
最大标签数:使用max-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 补充道(来自评论):
这个方法的唯一问题在于你只能获取特定版本文件的标签。
考虑到分支等可能存在,我们需要能够获取文件上所有标签。
如果你使用版本树图形界面并选择工具 -> "locate",就可以看到附加到该文件的所有标签。
Cleartool 中是否有一个通用命令可以返回 "locate" 或 "contents" 的结果?
lsvtree
(版本树图形界面)确实会显示当前视图中元素所有版本的标签,只需单击 "Label Name"。
尽管如此,似乎没有“内置”的解决方案,需要进行一些解析:
例如(比 OP 版本略短但仍基于 cleartool ls
):
ct ls -l addon.xml@@|grep version|gawk "{gsub(/^version.*@@\\\\/,\"\",$0) ; gsub(/ \ [.*/,\"\",$0); print $0}"
cd m:/myView/path/to/addon.xml@@
# list all files, not directories: the files are the labels
dir /B /A-D
ct ls -l....
命令,但它不起作用。 - deppermIBM文章“cleartool find命令的其他示例”是查找查询的好资源。
要扩展VonC在他的回答中提到的“lsvtree
”部分,您可以:
查找所有带有任何标签的元素:
Windows:
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
部分以使用标签筛选文件的所有版本。