如何在 Base clearcase VOB 中复制标签的内容?

How to copy the contents of a label in Base clearcase VOB?

我们要Base Clearcase VOB 的所有标签内容。 我为 VOB 创建了一个视图并将 config.spec 文档编辑为

element * checkedout
element * label_ID
element * /main/latest

但它带来了与 VOB 而不是与标签关联的所有组件。

如何select 标记为label_ID的元素?

如果在 vob 本身和所有元素上设置了标签(例如:/<vobtab>/dir1/<vobtab>/dir1/dir2//<vobtab>/dir1/dir2/*), 下面的配置规范只会带来带标签的元素,而不是其余的 vob 元素:

element * checkedout
element * label_ID
element * -none

但是,如果 label_ID 已在 /<vobtab>/dir1/dir2/* 中的所有元素上设置, 而不是 /<vobtab>/dir1/(父文件夹本身)上的 或不在 /<vobtab>/(vob 本身的根文件夹)上,那么该配置规范根本不会带来任何元素。
解决方法是 select 父元素:

element * checkedout
element * label_ID
element /<vob_tag>/dir1 /main/LATEST
element /<vob_tag> /main/LATEST
element * -none

我建议在动态视图中执行此操作(每次修改配置规范后都可以快速刷新),而不是快照视图(每次 setcs 后都必须重新加载)


另一种方法,不基于配置规范(因为很难select正确的父文件夹以访问标记的元素)是使用 cleartool find 查询。
参见:

  • "ClearCase list of files with given label type applied"
  • "ClearCase: Find files having exactly one specific label and not more"
  • "How to search files by label":

基本上,您可以 仅列出 带标签的元素,方法是进入“最好是动态的)视图并执行以下操作:

UNIX and Linux:

cleartool find -cview -element '{lbtype_sub(REL1)}' -print

Windows:

cleartool find -cview -element "{lbtype_sub(REL1)}" -print

您可以使用-exec "a command"代替-print,并使用exec选项执行任何命令,例如复制您刚刚找到的内容:

cleartool find -cview -element "{lbtype_sub(REL1)}" -exec "copy \"%CLEARCASE_PN%\" c:\a\path"

cleartool find . –version "lbtype(LB_TYPE)"

如果命令太挑剔,只需将结果重定向到文件:

cleartool find -cview -element "{lbtype_sub(REL1)}" -print > file.txt

然后处理该文件以复制其内容,如“Batch: Copy a list (txt) of files”:

@echo off
set src_folder=c:\whatever
set dst_folder=c:\target
for /f "tokens=*" %%i in (File-list.txt) DO (
    xcopy /S/E/U "%src_folder%\%%i" "%dst_folder%"
)

如果您不介意看到一堆空目录,您可以这样做:

element * CHECKEDOUT
element -file * label_ID
element -directory * /main/LATEST

这将 return 每个文件夹的最新版本或 CHECKEDOUT 版本,但它不会显示文件,除非它被标记或 CHECKEDOUT

查看 the config_specs reference page - 您可以使用配置规范做很多事情(例如,如果您只需要 MSWord 文档,您可以 "element -file *.doc /main/LATEST")