如何使用ClearCase进行递归检出?

12

我希望能够检出指定文件夹下所有子目录中的所有文件。

(使用GUI进行此操作很麻烦,因为没有递归检出选项。)

2个回答

24

注意:ClearCase是以文件为中心而不是以代码库为中心的(像SVN或CVS一样)。

这意味着很少有好的解决方案可以检出所有文件(使用ClearCase可能需要相当长的时间;))

话虽如此,这个问题是完全合法的,我想指出另一种方法:

在“指定文件夹”中打开cleartool会话:

c:\MyFolder> cleartool
cleartool> co -c "Reason for massive checkout" .../*

这个技巧也能达到效果。但和aku的回答一样,它会检查所有的东西:文件和目录……而你可能并不需要检查目录!


cleartool find somedir -type f -exec "cleartool checkout -c \"Reason for massive checkout\" \"%CLEARCASE_PN%\""

只想检出更改的文件...

现在的问题是要对所有更改过的文件进行checkin操作。这很棘手,因为通常并不是所有文件都发生了改变,而且CleaCase在尝试check in一个相同的文件时会触发错误消息。这意味着您需要使用两个命令:

ct lsco -r -cvi -fmt "ci -nc \"%n\"\n" | ct
ct lsco -r -cvi -fmt "unco -rm %n\n" | ct

(在Windows上使用命令'doskey ct=cleartool $*'来设置别名'ct'代表'cleartool' )

请注意,使用ct ci -nc将会使用用于签出阶段的注释进行签入。因此,这不是没有注释的提交(就像-nc选项——或“无注释”——可能让人相信的那样)。


8
cleartool find somedir -exec "cleartool checkout -nc \"%CLEARCASE_PN%\""

另外一篇文章 "ClearCase:十个最佳脚本" 也许会有所帮助。


如果您正在使用Linux,则将%CLEARCASE_PN%替换为$ CLEARCASE_PN。 - Peewhy
@Peewhy 说得好。CLEARCASE_PN(表示路径名)或 CLEARCASE_XPN 都是由 Clearcase 脚本(例如 cleartool find)设置的环境变量。对于它们,Windows 语法(%...%)或 Unix 语法($...)都可以生效。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接