【问题标题】:Clearcase copy files and folders to another locationClearcase 将文件和文件夹复制到另一个位置
【发布时间】:2018-06-25 22:05:08
【问题描述】:

我有一个要求,我需要通过 python 将 Clearcase 特定版本的目录和子目录文件复制到另一个位置。当我使用 shutil.copytree 函数时,它会复制文件夹文件,但问题是它将文件创建为目录类型。

ex:
source = "testfolder/@@/main/1"
destination = "/home/myid/test"
shutil.copytree(source, destination)

对于上述代码,我将所有文件名作为目录类型。

你能帮我如何将特定版本的文件夹复制到 python 或 unix 中的另一个位置(clearcase)

【问题讨论】:

  • 所以,如果我理解正确的话,source 树中的 文件 最终会在 @ 中显示为 目录 987654323@目录?看起来很奇怪。你能确认它们实际上是文件而不是符号链接或类似的东西吗?即使是这样,对我来说仍然很奇怪......因此,我猜想令人惊讶的地方在于 clearcase 如何存储版本化文件的本质。我根本不熟悉的东西。

标签: python unix directory copy clearcase


【解决方案1】:

如果您可以从 python 执行系统命令,最好调用 clearfsimport,它用于将文件复制(和导入)到 ClearCase 视图中(执行必要的 checkout/mkelem /签到)

查看syntax example for this command here

你可以在这里看到一个 python 包装器:erichschroeter/clearcase-wrapper-scripts/clearcase/import.py

【讨论】:

    【解决方案2】:

    实际上,问题在于您在副本中使用了版本扩展命名。由于源目录是 testfolder@@ 而不是 testfolder,因此您已将 CD 放入目录 ELEMENT。当你这样做时,所有元素都变成了目录,分支变成了目录,版本变成了“文件”。

    如果你有一个元素有 3 个分支(main、br1 和 br2),每个分支上有 2 个版本,你会得到这样的结果:

    foo.c@@(目录)

    foo.c@@/main(目录)

    foo.c@@/main/br1(目录)

    foo.c@@/main/br2(目录)

    foo.c@@/main/[0-2] 作为文件

    foo.c@@/main/LATEST(以及文件上的任何其他标签)作为文件。

    这实际上是动态视图中的合并工具访问当前视图未选择的贡献版本的方式。在快照视图中,合并工具必须使用相当于“cleartool get -to”命令的方式下载它们。

    避免拉动整个元素树的最佳方法是什么?使用视图选择您要访问的目录版本。

    【讨论】:

      猜你喜欢
      • 2015-04-16
      • 2021-12-18
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多