如何在 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")
我们要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")