将一个重要的遗产 Java 项目移至 Git

Moving a big Legacy Java Project to Git

我有一个结构良好的大项目,在我的团队中用 SVN 维护。而且我们不想移动到 Git - 这将进一步与 Teamcity 或 Jenkins 等连续集成服务器集成(尚未决定)。 当我看到 svn 时,我发现由于 svn 允许您从任何地方创建标签 - 它有很多标签,只包含单个项目。 代码库非常庞大,我将所有代码导入到一个 git 存储库中。一种方法是针对每个项目——我可以创建单独的回购协议,或者将一些项目组合到一个回购协议中(不确定)

我想要实现的是我想保留所有历史记录并打破回购协议,以便于管理。 (在将来与 jenkins 集成以在每次提交时自动构建时,它也会有所帮助)

如何确保保留历史记录、拥有所有现有标签并移动到 git

git-svn 是帮助完成此迁移的明显解决方案,但在我看来,这对于从 SVN 到 git.

的一次性迁移更好

如果您想同时保留 SVN 和 git 存储库并允许对两者进行提交(使它们保持同步),我建议 SubGit

当我们从 svn 迁移到 git 时,我发现 this Whosebug post 非常有帮助,特别是第二个答案。根据您的描述,我假设一切都在一个主干下。这确实让它变得有点复杂。我以前没有尝试过移动单个项目,但您可以通过以下两种方式之一进行:

  1. 将整个 svn 存储库、标签、分支等迁移到本地 git 存储库(在推送到远程之前)。然后按照 (this) Whosebug post 中的建议拆分项目。这应该为您提供个人回购,然后您可以将其推送到远程回购。

  2. 当 运行 将 svn 转换为 git 时,您可以更改步骤并指定单个项目,但这似乎很危险且令人困惑,因为 tags/branches不一定会排队