从Surround SCM导入Git?

12

我们公司有一个大型的代码库在Surround SCM中,这个库几年前从SourceSafe迁移过来。我们正在寻找更适合我们需求的替代品,但是将我们的历史记录从Surround导出却是一项具有挑战性的任务。

通过谷歌搜索git导入器,我发现一个关于自定义导入器的好教程。它似乎也支持svn、Perforce等许多其他版本控制系统,但不支持Surround。

是直接拍摄快照并开始新的git仓库更好呢?还是值得编写脚本来获取15年以上的代码历史记录?

3个回答

6

在我遇到这种情况时,我自己写了一个自定义导入程序:export-surround-to-git

该方法能够保留完整的历史记录、时间戳、作者、评论、分支、快照等。

此脚本已经在有限的场景中进行了测试,并且迄今为止已经被证明是成功的。虽然还在不断改进中,但这可能是您正在寻找的东西。它是开源的,所以请随意自行改进脚本!


那个脚本在Windows上运行效果不太好,但我会在两周内发送一些修复(在转换一个巨大的代码库之后)。 现在它的代码非常混乱,所以我必须先整理一下。 顺便说一下 - 那是我的分支(或某种类型的分支) https://github.com/xeningem/export-surround-to-git.git - Mikhail Aksenov

4
在这种情况下,可以编写脚本,但无法获取所有历史记录。
我建议只导入:
- 主要标签(对于任何早于一年或您感到舒适的时间段,您不需要完全检查它们,因为它们太旧) - 过去几年的所有标签(主要和次要)。
然而,迁移到Git还需要工作,以便在您的集中式Surround存储库中识别模块或应用程序。尝试将所有这些数据导入一个Git存储库是错误的,除非它是一个巨大的系统,不能独立地分开开发(如Linux内核)。
请参见:
- “ Git的限制是什么?” 和 - “从cvs转移遗留代码库到分布式存储库(例如git或mercurial)。需要有关初始存储库设计的建议。

4
Surround SCM有一个SDK。我使用它将一个CVS存储库迁移到了Surround。几年后,一个团队考虑要转移到SVN,并问我能否迁移该存储库。我想出了一个解决方案,它包括遍历Surround存储库并创建一个中间的内存数据库,然后进行处理。为了确保日期正确,我会重置计算机上的时钟。在我完全实施解决方案之前,我们决定为该团队保留一个浮动许可证,以便当他们需要查看历史记录时使用,并计划重新考虑其项目的整个组织结构。(作为FYI,两年过去了,该团队仍在使用Surround。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接