我如何使用 ClearCase 递归地“添加到源代码控制......”?
Posted
技术标签:
【中文标题】我如何使用 ClearCase 递归地“添加到源代码控制......”?【英文标题】:How can I use ClearCase to "add to source control ..." recursively? 【发布时间】:2010-09-13 09:24:05 【问题描述】:我将一个 zip 文件解压到一个透明的视图中。现在我想将完整的文件树添加到存储库中。 GUI 只为单个文件/目录提供“添加到源代码控制...”。你知道如何递归地添加整棵树吗?
(我在 Windows 系统上,但安装了 Cygwin。)
【问题讨论】:
【参考方案1】:我宁愿使用 clearfsimport 脚本,更好地导入多次相同的文件集,并且自动:
添加新文件, 制作先前导入的现有文件的新版本(但在重新导入的源文件集中进行了修改) 删除已导入但不再存在于源文件集中的文件。 清晰记录导入过程中的所有操作。因此,如果您的 'zip 文件交付需要定期更新,clearfsimport 是不错的选择,但有以下选项:
clearfsimport -preview -rec -nset c:\sourceDir\* m:\MyView\MyVob\MyDestinationDirectory
注意:
-preview 选项:它将允许检查会发生什么,而无需实际执行任何操作。 '*'只在Windows环境下使用,为了导入目录的内容 -nset 选项。来自CMWiki,关于“nset”选项:
默认情况下,clearfsimport 旨在供 vob 所有者或特权用户使用,但用户经常忽略 -nsetevent 选项,任何用户都可以使用该选项。 此选项驱动 clearfsimport 不将元素的时间戳设置为 vob 之外的源文件对象的时间戳(需要特权访问)。 这样做有一个不明显的副作用:一旦创建了具有当前时间戳的版本,即使是 vob 所有者也无法在其上导入具有较旧版本的版本(因为它会) 时间戳,没有这个 -nsetevent 选项。 IE。一旦您使用此选项,普通用户或特权用户,您或多或少都会继续使用它。
【讨论】:
确实,这将是正常的用例。这种方法的一个缺点是您无法提取到目标目录中。但我想我可以使用固定的“导入”目录。 这将是进行这种导入的方式,(即从单独的“源”目录),因为预览功能(它可以让您从您的 zip 中检测一些您可能实际上不想导入!) 我遇到的问题是它通过附加“.keep”重命名了我的原始文件夹(已经是私有文件夹),所以所有操作都失败了,因为源文件夹名称已更改。 @Pat - 我遇到了同样的问题。这是我发现并且对我有用的内容: clearfsimport 不允许源目录和目标目录相同。如果它们相同,它将创建一个 .keep 目录。然后,您可以使用 .keep 目录作为源重新运行 clearfsimport 脚本(然后您可以在完成后删除 .keep 目录)。 @VonC- 我的 Clearcase 服务器太慢了。我无法一次性添加所有文件,因此我手动选择了文件夹并搜索所有文件并添加到源代码管理。就像我有 47 个文件夹一样,如果我执行命令,手动添加后会有任何问题..?【参考方案2】:这是我使用 Windows 资源管理器发现的另一种方法:
-
从目标目录的上下文菜单中选择
Search...
。
搜索*
。
选择结果列表中的所有 (Ctrl-A
) 文件/目录。
从结果列表中某个项目的上下文菜单中选择ClearCase
> Add to source control...
。
你去...
【讨论】:
这对我有用,但我确实收到了一些弹出错误,说该项目已经在源代码管理中,大概是由于它执行操作的顺序?添加选项后,我确实选择了结帐。似乎一切正常,只需在错误弹出窗口上单击确定 请注意,这不适用于 x64:www-01.ibm.com/support/docview.wss?uid=swg21251833 @Markus,我没有看到搜索 * 选项ClearCase Remote Client 7.1.2
,这个版本是特定的吗?
@hawkeye 当我们使用 '*; 进行搜索时它还以递归方式显示子文件夹中的所有文件,因此有助于递归地添加到 clearcase。
我认为它确实有效,但如果遇到已经在 clearcase 中的文件,您很容易意外地取消整个过程。它非常乏味且容易出错,但是 Clearcase 的一切都是......【参考方案3】:
由于我无法访问 clearfsimport ,因此我分两步添加了文件/目录:
1.) find . ! -path . -type d | xargs cleartool mkelem -mkpath -nc
这将为所有新目录递归创建节点
2.) find ./ -type f | xargs cleartool mkelem -nc
这将递归地为所有新文件创建节点
【讨论】:
这对我有用。大约 1944 个文件添加到源代码管理中 对我也很好(在 cygwin 上)。实际上,只需将 2) 与-mkpath
一起使用就足够了——目录是即时添加的。 (也许效率较低——恐怕目录中的每个文件都会被签出)。
Xargs 不是 Windows 的默认命令。您应该向读者说明清楚。【参考方案4】:
当您选择“添加到源代码管理”时,ClearTeam Explorer 版本 8(可能更早)具有递归添加子目录/文件的功能。当“添加到源代码管理”对话框出现时,选中“包括所选目录的后代工件”复选框并取消选中“仅检出后代文件,不检出后代目录”复选框。
【讨论】:
四年前这个问题被接受的答案是相当彻底的。如果您正在寻找未回答的问题,可以在这里查看:***.com/unanswered @valverij 除了他提供了新信息,所以在这里添加他的答案很有价值【参考方案5】:您必须使用命令行。 Explorer 中的上下文菜单不会递归执行此操作!
clearfsimport –recurse /usr/src/projectx /vobs/projectx/src
【讨论】:
【参考方案6】:这是执行此操作的脚本 以及从 Explorer 集成脚本的提示
http://www.ibm.com/developerworks/rational/library/4687.html
【讨论】:
【参考方案7】:有类似的要求以递归方式将目录添加到 ClearCase。由于我无法访问 clearfsimport 工具,也没有将 ClearCase 与 Windows 资源管理器集成,因此在 ClearCase GUI 中找到了一个简单的解决方案。
1) 使用“添加到源代码管理”菜单选项添加根目录。 2) 点击该目录,然后使用“ClearCase Search”搜索该目录下的所有Private Files。 3)从搜索结果和“添加到源代码管理”中选择所有
你去吧!整个目录是从 ClearCase GUI 中递归添加的
【讨论】:
【参考方案8】:您可以在以下位置获得修复
http://www-01.ibm.com/support/docview.wss?ratlid=cctocbody&rs=984&uid=swg21117629
【讨论】:
有趣的技术说明,适用于 CC7.0 及更低版本。 +1【参考方案9】:您还可以使用小脚本将此命令添加到上下文菜单中...
Ten best Triggers
编辑:哦,对不起。没看到已经有人建议了...
【讨论】:
【参考方案10】:我同意, 如果要进行版本控制的文件数量很大,则 Windows 资源管理器中的 find+select+add-to-source-control 不是一个好的选择。如上所述,如果我们尝试添加大量文件,explorer.exe 会崩溃。
clearfsimport 是完成这项任务的最佳且最省心的实用程序。
-GP
【讨论】:
以上是关于我如何使用 ClearCase 递归地“添加到源代码控制......”?的主要内容,如果未能解决你的问题,请参考以下文章
用于创建 ClearCase 快照视图的正确“cleartool mkview”