如何将现有的GIT项目导入SVN,保留GIT主分支上的历史记录?

3

我有一个使用GIT开发的项目,有数百个提交记录。我只有一个主分支,这些提交是线性的。

现在我被要求将源代码放入现有的SVN中,最终我想保留主提交历史记录(消息和差异,作者由SVN访问预设)。

就像我需要重播整个提交历史到SVN中。从GIT中是否有一种更自动化的方法来实现这一点?

我脑海中浮现出一个想法,但我不知道该如何实现:我在SVN中创建一个新的空的trunk/,用GIT克隆它(即一个空的GIT SVN克隆),并将我的主改变重播到其中,然后进行dcommit。

将来我会继续使用我的GIT分支,并将其与SVN同步。


2
出于好奇,你为什么从Git转向SVN? - Zachary Wright
1
@Zachary:在我看来,我不是在移动项目:我是被那些我为之开发的人要求将其放入他们的SVN中。而且,理想情况下,我希望保留历史记录。我将来会继续使用GIT进行开发,但是会定期推送到他们的SVN中。以某种方式将所有内容放入SVN并使用GIT检出对我来说也是可以的。 - mark
热衷于开发的程序员,渴望新的经验,开始在本地使用Git。喜欢它。用它构建原型两周。业务部门喜欢这个原型,说:“这个Git是什么?SVN有什么问题吗?将其放入我们的SVN存储库中,但保留所有有用的提交历史记录。”不止一次看到这种情况发生。 - Holf
2个回答

2

谷歌有一份非常详细的教程,介绍了如何执行此操作(这里)。虽然它是针对导入到Google代码的,但可以适用于任何svn存储库。


1
很遗憾,该页面已经不存在了。你知道其他的资源吗? - exilit

0
  1. 建立一个空的SVN项目并进行一些提交。
  2. 使用“git svn clone”命令克隆它。
  3. 在几乎为空的git-svn项目中导入历史记录(在此处进行rebase)。
  4. 使用“git svn dcommit”命令。

问题:

  1. 时间戳和作者名称可能会出现错误。
  2. 当要提交的提交数量过多时,“git svn dcommit”命令的效果不佳。最好将其分成每个包约20个提交。

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