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