如何在ClearCase中查找给定文件的所有标签

3
我知道一个笨拙的解决方案:
  • 首先使用ct ls获取文件的完整版本信息
  • 然后将版本信息传递给解析脚本,以实际获取文件的标签。
但我想ClearCase应该有一个“内置”解决方案来完成此任务,而不需要任何外部脚本的支持。
如果你知道这个任务的“内置”解决方案,请帮帮我。谢谢!

@Haiyuan:刚刚完成了列出文件中所有标签的答案。恐怕没有“内置”解决方案。 - VonC
2个回答

7

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}"

(GnuWin32 语法)
或者,仅使用动态视图:
cd m:/myView/path/to/addon.xml@@
# list all files, not directories: the files are the labels
dir /B /A-D 

我因为你的更新给你点了赞!很抱歉这个回复来得有些晚,我在谷歌搜索时又发现了这个问题。 - onaclov2000
@VonC 我没有他尝试做的工作示例。 - depperm
@depperm 但是你已经有一个可以工作的例子来展示你正在尝试做的事情:请编辑答案以说明适用于你情况的工作方式。 - VonC
@VonC 不是的,我没有...我正在使用ct ls -l....命令,但它不起作用。 - depperm
让我们在聊天中继续这个讨论 - depperm
显示剩余5条评论

3

IBM文章“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部分以使用标签筛选文件的所有版本。


我冒昧地扩展了您最初提供的链接。StackOverflow是一个问答网站,旨在在每个答案中包含尽可能多的信息,以限制其对外部来源(例如此链接,可能会在任何时候到期/更改)的依赖。顺便加一分。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接