如何在clearcase中找到给定文件的所有标签

如何在clearcase中找到给定文件的所有标签,clearcase,Clearcase,我知道一个棘手的解决方案是: 首先使用ct ls获取文件的完整版本信息 并将版本信息传输到解析脚本,以实际获取文件的标签 但是我想ClearCase应该有一个“内置”解决方案来完成这个任务,而不需要任何外部脚本的支持 如果您碰巧知道任务的“内置”解决方案,请帮助我。 提前感谢。包含各种ClearCase元素的所有格式字符串 对于文件的版本,您可以: cleartool descr -fmt "%l\n" /path/to/a/version %l 标签:对于版本,所有附加标签;否则返回空

我知道一个棘手的解决方案是:

  • 首先使用
    ct ls
    获取文件的完整版本信息
  • 并将版本信息传输到解析脚本,以实际获取文件的标签
但是我想ClearCase应该有一个“内置”解决方案来完成这个任务,而不需要任何外部脚本的支持

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

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

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

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

标签:对于版本,所有附加标签;否则返回空字符串。
标签以逗号分隔的列表形式输出,并用括号括起
每个逗号后面都有一个
字符

变体

  • %Cl

    最大标签数:使用“最大字段宽度”参数指定要显示的最大标签数(请参阅)。
    如果有更多标签,“
    ”将附加到输出。
    如果未指定最大字段宽度,则最大默认值为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

添加(从评论中):


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

单击“标签名称”时,
lsvtree
(图形版本树)确实会显示视图当前看到的元素的所有版本的标签

也就是说,似乎没有“内置”解决方案,其中涉及一些解析:

例如(比OP版本略短,但仍然基于
cleartool ls
):

(GnuWin32语法)

或者,仅使用动态视图:

cd m:/myView/path/to/addon.xml@@
# list all files, not directories: the files are the labels
dir /B /A-D 
IBM文章“”是查找查询的重要来源。
要展开中提到的“
lsvtree
”位,您必须:

要查找带有任何标签的所有元素

窗口:

UNIX/Linux:


这只会为视图中当前选定的版本查找标签,但您可以重用
lsvtree
部分,以使用标签对文件的所有版本进行grep处理。

唯一的问题是,如果存在分支等,您会在文件的特定版本上获取标签,我们需要能够获取一个文件上的所有标签,如果您使用版本树图形并选择工具->“定位”,您可以看到附加到该文件的所有标签,cleartool中是否有一个通用命令将返回“定位”或“内容”的结果?@onaclov2000:不确定是否有否决票,但我已经扩展了我的答案以解决问题“列出所有标签“查询。由于您的更新,我投票给您!很抱歉,没有来得更快,我在谷歌搜索时再次遇到这个问题。我知道这是一篇旧帖子,但当我尝试
ct ls-l…
时,``在应该是`\``的空格处,`@海原:刚刚完成了我的答案,列出了一个文件的所有标签。恐怕没有“内置”解决方案。我冒昧地扩展了您的初始链接。StackOverflow是一个问答网站,旨在在每个答案中包含尽可能多的信息,以限制其对外部来源的依赖性(如此链接可能随时过期/更改)+1顺便说一句。
cd m:/myView/path/to/addon.xml@@
# list all files, not directories: the files are the labels
dir /B /A-D 
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)
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)