我已经找到了许多可以回答我的问题的解决方案,但它们对我来说都显得非常模糊。他们中的大多数都没有充分记录,我还没有准备深入研究代码,以了解它们是如何工作的。所以我决定编写一个程序来将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可以帮助我:)
答案 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视图。