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

时间:2015-03-20 07:55:24

标签: git clearcase

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

在ClearCase non 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看起来很有希望。不幸的是,没有文档,花了几个小时后,我仍然不明白它是如何工作的。也许charleso可以帮助我:)

2 个答案:

答案 0 :(得分:1)

您可以添加输出中缺少的分支(fmt_ccase)(以及您在列表中提到的内容):

%Sn
  

简称:对于版本,版本ID的简短形式:branch-pathname/version-number。对于其他对象,空字符串。

几点意见:

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

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

答案 1 :(得分:1)

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

git ccpull 

获取对ClearCase存储库和命令

所做的更改
git ccpush 

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