2010-02-24 88 views
2

给定文件的标签我知道这个TAKS一个尴尬的解决方案将是:如何找到所有在ClearCase中

  • 第一次使用ct ls获取文件
  • 和管道的整个版本信息版本信息到解析脚本以实际获取文件的标签。

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

如果您碰巧知道该任务的“内置”解决方案,请帮助我。
在此先感谢。

+0

@海源:刚刚完成我的答案列表*所有*文件的标签。我恐怕没有“内置”解决方案。 – VonC 2010-03-24 14:13:02

回答

5

fmt_ccase包含各种ClearCase元素的所有格式字符串。

对于一个版本的文件,您可以:

cleartool descr -fmt "%l\n" /path/to/a/version 

%l
标签:对于版本中,所有贴有标签;否则为空字符串。
标签以逗号分隔的列表形式输出,用圆括号括起来。
A <SPACE>字符跟随每个逗号。

变体

  • %Cl
    最大标签:指定标签的最大数目与最大场宽度参数(见Specifying 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增加(从评论):

唯一的问题是,您正在抓取文件特定版本的标签。
鉴于分支等可以存在,我们需要能够获得文件上的所有标签。
如果您使用版本树图形并选择工具 - >“定位”,您可以看到全部附加到该文件的标签。
在cleartool中是否有一个共同的命令会返回“locate”或“contents”的结果?

lsvtree(图形版本树)确实显示当前由图中看到的元素的所有版本的标签,当你点击“标签名称”

话虽这么说,似乎没有要一个“内置”的解决方案和一些分析涉及:

例如(这是比OP短版位,但仍然基于一个cleartool ls):

ct ls -l [email protected]@|grep version|gawk "{gsub(/^version.*@@\\\\/,\"\",$0) ; gsub(/ \ [.*/,\"\",$0); print $0}" 

(的GnuWin32语法)

,或者只能用动态的观点:

cd m:/myView/path/to/[email protected]@ 
# list all files, not directories: the files are the labels 
dir /B /A-D 
+0

唯一的问题是你抓取特定版本的文件上的标签,考虑到分支等可以存在,我们需要能够获得文件上的所有标签,如果你使用版本树图形和选择工具 - >“定位”你可以看到所有的标签附加到该文件,有一个共同的命令在cleartool将返回“定位”,或“内容”的结果? – onaclov2000 2010-03-24 13:26:59

+0

@ onaclov2000:不确定关于downvote,但我已扩展我的答案以解决“列出所有标签”查询。 – VonC 2010-03-24 14:10:57

+0

由于您的更新,我向您投票赞成!对不起,它不会早点来临,我在谷歌搜索过程中再次遇到这个问题 – onaclov2000 2011-02-17 15:33:18

2

IBM的文章 “Additional examples of the cleartool find command” 是查找查询的重要来源。
为了扩大对VonChis answer提到的 “lsvtree” 一下,您有:

要找到任何标签所有元素:

的Windows:

cleartool find . -type f -exec "cleartool lsvtree -a %CLEARCASE_PN%" | findstr 
"(" 
./[email protected]@/main/1 (LABEL100, LABEL99, LABEL98, LABEL97) 
./[email protected]@/main/BR1/1 (REL2) 
./[email protected]@/main/1 (REL1) 

UNIX/Linux的:

cleartool find . -type f -exec 'cleartool lsvtree -a $CLEARCASE_PN' | grep "(" 

./[email protected]@/main/1 (LABEL100, LABEL99, LABEL98, LABEL97) 
./[email protected]@/main/BR1/1 (REL2) 
./[email protected]@/main/1 (REL1) 

即发现只为当前视图中选定的版本标签,但你可以重用lsvtree部分到grep带标签文件的所有版本。

+0

我冒昧地在您的初始链接上进行了扩展。 StackOverflow是一个问答网站,旨在尽可能多地在每个答案中包含尽可能多的信息,以便限制其对外部来源的依赖性(例如,此链接可能会在任何时候被更改/更改)。 +1 btw。 – VonC 2011-01-20 11:29:54

相关问题