Cleartool:如何将标签应用于仅在我当前视图中的文件?

use*_*966 8 clearcase cleartool

我找不到将标签应用于当前视图中的文件的正确命令.我尝试了以下命令:

cleartool mklabel -r TEST_LABEL /vob/test/a
Run Code Online (Sandbox Code Playgroud)

但是,问题是该命令将" Test_Label"标签应用于" vob/test/a"目录中的每个文件,而不管文件是否在我当前的视图中.
是否有任何命令仅将标签应用于当前视图中列出的文件?

小智 5

cleartool mklabel  -r(ecurse) LABEL_NAME <directory name>
Run Code Online (Sandbox Code Playgroud)

此命令将LABEL_NAME应用于视图文件夹及其下方的所有文件,您只需转到该目录,然后键入以下命令即可创建和应用标签

> cd /vob/test/a
> cleartool mklbtype –nc TEST_LABEL 
> cleartool mklabel  -r TEST_LABEL .
Run Code Online (Sandbox Code Playgroud)


Von*_*onC 1

文档状态说明了标记的版本mklabel

处理作为目录元素的每个 pname 的整个子树(包括 pname 本身)。在递归下降到子树期间不会遍历 VOB 符号链接。

一个例子提到:

将该标签附加到您的视图所选的当前目录的版本,以及当前目录中及其下的每个元素的当前所选版本


现在,如果您想真正确定实际标记的版本,一种解决方案是使用find命令并结合您的mklabel

cleartool find . -cview -exec "cleartool mklabel TEST_LABEL \"%CLEARCASE_XPN%\""
Run Code Online (Sandbox Code Playgroud)

如果您已将该标签应用于不正确的版本并想要移动它:

cleartool find . -cview -exec "cleartool mklabel -replace TEST_LABEL \"%CLEARCASE_XPN%\""
Run Code Online (Sandbox Code Playgroud)

这样,您可以先列出涉及的版本:

cleartool find . -cview -print
Run Code Online (Sandbox Code Playgroud)

然后,如果您同意输出,请应用mklabelthrough-exec指令。

OP user1096966报告使其与 , 一起使用cleartool ls,以确保仅选择当前视图中可见的元素:

cleartool ls -r -vis
Run Code Online (Sandbox Code Playgroud)

没有“-exec”指令,因此可能涉及管道,如下所示(未测试,但您明白了):

cleartool ls -r -vis -s -nxn | xargs cleartool mklabel -replace TEST_LABEL
Run Code Online (Sandbox Code Playgroud)