我正在 Windows 动态视图中工作。
我正在尝试使用 ClearCase 菜单编辑器创建一个工具快捷方式,以自动对我视图中的所有私有文件执行“
mkelem
”。
我知道“
cleartool lsprivate -other
”可以获取所有私有文件的完整路径列表,但我不知道如何将结果列表输入“mkelem”命令中。find
”命令,最后您可以指定“-exec
”以使其执行要在结果列表上执行的附加操作,但我再次不知道是什么提供给“find
”的参数,以便它只查找查看私有文件。
有人可以帮我吗?
我会考虑/测试的另一种方法是我在“如何使用 ClearCase 递归地“添加到源代码管理……”?”中提到的方法,其中
clearfsimport
。
我怀疑将视图文件夹导入到视图本身中的clearfs应该会自动添加私有文件,同时保持现有文件不变。但是,正如所评论的,您需要导入一个新的动态视图(具有相同的配置规范)才能正常工作。
cleartool find
的问题是它会找到版本化的元素。%CLEARCASE_PN%
或 %CLEARCASE_XPN%
作为参数:引用已经 versioned 元素的路径名或扩展路径名。
嗯,这很复杂,因为您需要在创建元素之前检查父目录。
您是否尝试过类似这样的命令:
for /f "delims==" %x ('cleartool lsprivate -other') do @cleartool co -nc "%~px" & cleartool mkelem -mkpath -ci -c "autoadd" "%x" & cleartool ci -nc "%~px"
-mkpath 在创建元素的同时创建元素路径的任何缺失部分。那应该——通过适当的处理,使其在“cmd /c”或批处理作业中工作,完成基础知识...当然,这也为每个新元素提供了 1 个新版本的父目录。
如果您不反对 Perl,您可以通过获取该列表、创建任何所需的目录并创建元素来对此进行扩展。
将 lsprivate 命令包装在另一个 shell 命令中,以限制输入 lsprivate “消耗”作为参数。
lsprivate 似乎很不寻常,因为任何和所有参数都被处理为路径名 - 因此不可能将输出重定向到文件。
在命令行窗口命令“for /F in ('command-that- Produces-string-output') do more_commands_and_arguments”中包装 lsprivate 是有效的。
for /F "delims==" %x in ('cleartool lsprivate -other "v:\firstinitial_lname\vob_name\software\build_products\yyyy-MM-dd""') do @cleartool mkelem -mkpath -ci -c "Initial Check-In" "%x"
详细说明
cleartool lsprivate -other <path>
此命令非常适合获取文件系统子树中的视图私有文件(-view_only 文件)列表。
您会发现参数后面的任何内容都被视为路径。
这种行为使得将输出重定向到文件变得困难。
将 shell 命令包装在另一个 shell 命令中。
通过将cleartool lsprivate 包装在另一个 shell 命令中,将 lsprivate 输出重定向到文件
(说明命令行环境变量可以与cleartool lsprivate一起使用)
for /F "delims==" %x in ('cleartool lsprivate -other "v:\firstinitial_lname\vob_name\software\build_products\yyyy-MM-dd"') do echo Folder "%~px" pathname "%x" >> ../../result_lsprivate.txt