将 ClearCase 树同步到 Git(仅向下同步)

Sync a ClearCase tree to Git (downward sync only)

我已经找到了许多可以回答我的问题的解决方案,但它们对我来说都显得很晦涩。它们中的大多数都没有充分记录,我还没有准备好深入研究代码以了解它们究竟是如何工作的。所以我决定编写一个程序将 ClearCase 树同步到 Git 存储库。

在 ClearCase 非 UCM 上,只有标签是相关的,因为它们是允许将文件粘合在一起的唯一信息。稍后我还可以查看每个文件的时间戳,并根据他们的评论猜测它们是否属于同一个提交。

所以我的第一步是使用这些信息转储 ClearCase 树历史记录:

我认为可以用这个命令来完成:

cleartool find . \
    -exec 'ct lshistory \
        -fmt "[%n]\nHost:\t%h\nLabel:\t%l\nUser:\t%u\nComment:\t%c\n" \         
        %CLEARCASE_XPN% \
    '

一旦我有一个好的转储,我就可以编写我的 Git 同步工具,它将所有内容导入到一个包含所有分支和标签的 Git 存储库中。

不幸的是,我对我的 ClearCase 转储命令不满意。 有没有人可以帮助我?

从网上找到的解决方案我认为git-cc that looked promising. Unfortunately there is no documentation and after hours spent on it I still did not understand how it works. Perhaps charleso可以帮助我:)

您可以添加输出中似乎缺少的分支(fmt_ccase):

%Sn

Short name: For a version, a short form of the version ID: branch-pathname/version-number. For other objects, the null string.

一些评论:

  • 非UCM标签不必放在所有文件上:可以在标签的同时进行修改,但尚未标记(只有基线完整才会在组件的所有文件上设置标签)

  • a cleartool find 将仅列出视图中可见的元素:您可能会错过过去修订中已删除元素的历史记录。

您可以使用适用于 ClearCase 非 UCM 的 clearcase-gitcc。命令:

git ccpull 

获取对 ClearCase 存储库所做的更改和命令

git ccpush 

以类似于 clearfsimport 的方式将您的 HEAD 提交到您的 ClearCase 视图。