Version control 我如何使用ClearCase来;“添加到源代码管理…”;递归地?

Version control 我如何使用ClearCase来;“添加到源代码管理…”;递归地?,version-control,clearcase,Version Control,Clearcase,我将一个zip文件交付解压到clearcase视图中。现在我想将完整的文件树添加到存储库中。GUI仅为单个文件/目录提供“添加到源代码管理…”。你知道如何递归地添加整个树吗 (我在Windows系统上,但安装了Cygwin。)您必须使用命令行。资源管理器中的上下文菜单不会递归执行此操作 clearfsimport –recurse /usr/src/projectx /vobs/projectx/src 这里有一个脚本 和集成资源管理器中脚本的提示 我更愿意使用clearfsimport脚本,

我将一个zip文件交付解压到clearcase视图中。现在我想将完整的文件树添加到存储库中。GUI仅为单个文件/目录提供“添加到源代码管理…”。你知道如何递归地添加整个树吗


(我在Windows系统上,但安装了Cygwin。)

您必须使用命令行。资源管理器中的上下文菜单不会递归执行此操作

clearfsimport –recurse /usr/src/projectx /vobs/projectx/src
这里有一个脚本 和集成资源管理器中脚本的提示


我更愿意使用clearfsimport脚本,它可以更好地多次导入同一组文件,并自动:

  • 添加新文件
  • 使以前导入的现有文件成为新版本(但在重新导入的文件源集中进行了修改)
  • 删除已导入但不再存在于源文件集中的文件
  • 明确记录导入过程中的所有操作
因此,如果您的zip文件交付需要定期更新,clearfsimport是一种方式,但具有以下选项:

clearfsimport -preview -rec -nset c:\sourceDir\* m:\MyView\MyVob\MyDestinationDirectory
注意:

  • -预览选项:它将允许检查将发生什么,而不实际做任何事情
  • “*”仅在Windows环境中使用,以便导入目录的内容
  • -nset选项
来自,关于“nset”选项:

默认情况下,clearfsimport将由vob所有者或特权用户使用,但用户通常会忽略-nsetevent选项,任何用户都可以使用该选项。
此选项驱动clearfsimport不将元素的时间戳设置为vob之外的源文件对象的时间戳(需要特权访问)。
这有一个不明显的副作用:一旦创建了具有当前时间戳的版本,即使vob所有者也无法在其上导入具有较旧时间戳的版本,如果没有-nsetevent选项。即,一旦您使用此选项,无论是普通用户还是特权用户,您或多或少都会在继续中使用它


下面是我通过使用Windows资源管理器找到的另一种方法:

  • 从目标目录的上下文菜单中选择
    Search…
  • 搜索
    *
  • 在结果列表中选择所有(
    Ctrl-A
    )文件/目录
  • 从结果列表中某个项目的上下文菜单中选择
    ClearCase
    >
    添加到源代码管理…

  • 好了…

    您还可以使用一个小脚本将此命令添加到上下文菜单中

    编辑:哦,对不起。没有看到这已经被提出了…

    我同意, 如果要进行版本控制的文件数量很大,则从Windows资源管理器中查找+选择+添加到源代码管理不是一个好选项。如上所述,如果尝试添加大量文件,explorer.exe将崩溃

    clearfsimport是此任务中最好、最无麻烦的实用程序

    -GP

    您可以在


    有一个类似的要求,即递归地向ClearCase添加一个目录。因为我没有访问clearfsimport工具,也没有将ClearCase与Windows资源管理器集成,所以在ClearCase GUI中找到了一个简单的解决方案

    1) 使用“添加到源代码管理”菜单选项添加根目录。 2) 单击此目录,然后使用“ClearCase搜索”搜索此目录中的所有私有文件。 3) 从搜索结果中选择全部并“添加到源代码管理”


    好了!当您选择“添加到源代码管理”时,整个目录从ClearCase GUI中递归添加,ClearTeam Explorer版本8(也可能更早)具有子目录/文件的递归添加。当“添加到源代码管理”对话框出现时,选中“包含所选目录的子体工件”复选框,并取消选中“仅签出子体文件,不签出子体目录”复选框。

    由于我没有访问clearfsimport的权限,我在两步过程中添加了文件/目录:

    1.
    find-路径-类型d | xargs cleartool mkelem-mkpath-nc

    这将递归地为所有新目录创建节点

    2.
    find./-type f | xargs cleartool mkelem-nc


    这将递归地为所有新文件创建节点

    实际上,这是正常的用例。这种方法的一个缺点是无法提取到目标目录中。但是我想我可以使用一个固定的“导入”目录。这就是导入的方式(即从一个单独的“源”目录),因为预览功能(它可以让你从你的zip中检测到一些你实际上可能不想导入的文件!)我有一个问题,它重命名了我的原始文件夹(已被视为私有)通过附加“.keep”,所有操作都失败了,因为源文件夹名称已更改。@Pat-我遇到了相同的问题。以下是我发现的问题以及对我有效的方法:clearfsimport不允许源目录和目标目录相同。如果它们相同,它将创建一个.keep目录。然后,您可以重新运行使用.keep目录作为源的e clearfsimport脚本(完成后可以删除.keep目录)@VonC-我的Clearcase服务器太慢了。我无法一次性添加所有文件,因此对于taht,我手动选择文件夹并搜索所有文件并添加到源代码管理。就像这样,我已经添加了47个文件夹,如果我执行命令,在手动添加后将出现任何问题。有趣的技术说明,适用于CC7.0和更低版本。+1这对我来说很有效,但我没有有一些弹出错误,说该项目已经在源代码管理中,可能是因为它执行操作的顺序?我确实选择了添加后签出选项。似乎所有人都这么认为