如何以clearcase查找给定文件的所有标签

时间:2010-02-24 00:23:14

标签: clearcase

我知道这个目标的一个尴尬解决方案是:

  • 首先使用ct ls获取文件的完整版本信息
  • 并将版本信息传递给解析脚本以实际获取文件的标签。

但我想ClearCase应该有一个“内置”解决方案来完成这项任务,而不需要任何外部脚本的支持。

如果您碰巧知道任务的“内置”解决方案,请帮助我 提前谢谢。

2 个答案:

答案 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”是查找查询的绝佳来源 要扩展VonChis 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带有标签的文件的所有版本。