ClearCase:如何查找没有特定标签的元素

时间:2009-01-13 17:34:54

标签: version-control command-line clearcase

我正在寻找一个ClearCase命令,该命令将列出当前视图中可见的所有元素,但是 NOT 是否已应用特定标签。

比如说,我视图中可见的大多数元素都应用了 LABEL_X 。我想要一个没有 LABEL_X 的那些元素的列表。

我显然需要使用cleartool find,但是使用和ClearCase手册页让我对如何构造这样的查询感到困惑。

3 个答案:

答案 0 :(得分:3)

这应该有效:

ct find -all -ele '! lbtype_sub(LABEL_X)' -print
ct find -ele '! lbtype_sub(LABEL_X)' -print

注意:

  • ct代表cleartool
  • 这里的Unix语法(对于windows,用双引号替换简单引号)
  • 注意!lbtype_sub之间的空格(在winodws中你不需要空间)
  • -ele 非常重要,只能获得一个给定文件的一次(而不是符合条件的文件的所有不同版本)

-ele将搜索范围限制为元素,而不是版本(在涉及版本时会触发更多结果...)

-all列出所有包含“已删除”(即“未引用”)的元素 第二行仅列出可见元素(在当前视图中)

您应该在给定的ClearCase(快照或动态视图)中在您选择的子目录上执行第二个命令行:该子目录(和子子目录...)中与该cirteria匹配的所有文件将被列出。

警告:

  • 列出了文件和目录。如果您只想要文件,请在查询中添加-type f

    ct find -type f -ele'!lbtype_sub(LABEL_X)' - print

  • 显示的是元素的扩展路径,即@@后跟的文件的名称。

要仅列出没有@@的名称,请使用“-nxn”(无扩展路径名选项)

ct find -nxn -ele '!lbtype_sub(LABEL_X)' -print

另一种更复杂但更完整的方法是仅使用@@列出名称,即使用descr -fmt。例如:

ct find . -ele "!lbtype_sub(LABEL_X)" -exec "cleartool descr -fmt \"%En %d\n\" \"%CLEARCASE_PN%\""

ct find . -ele '! lbtype_sub(LABEL_X)' -exec 'cleartool descr -fmt "%En %d\n" "$CLEARCASE_PN"'

会给你(在windows或unix语法中)未标记为LABEL_X的文件和目录的日期和名称。

通过“descr -fmt”显示,您可以将所需的任何信息和演示文稿组合在一起。

答案 1 :(得分:2)

以上工作,但请记住指定-cview以获取当前视图,否则您也将从所有其他视图中获取文件。

答案 2 :(得分:1)

我需要在Linux clearcase安装上使用以下内容:

cleartool find -cview -all -version '\!lbtype(LABEL_X)' -print

VonC帖子的语法与“!”无法正常工作没有被逃脱。