2010-07-19 54 views
3

我有一个用GIT开发的项目,有几百个提交。我只有一个主分支,提交是线性的。如何将现有的GIT项目导入SVN,保留主分支上的GIT历史记录?

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

这就像我需要重播整个提交历史到SVN。有没有办法从GIT做到这一点或多或少是自动的?

我想到了一个想法,但我不知道如何处理它:我在SVN中创建一个新的空trunk/,用GIT克隆它(即一个空的GIT SVN克隆)并重播我的主变更而不是dcommit。

未来我会继续与我的GIT分支合作,并将其与SVN同步。

+2

出于好奇,你为什么要从git转到svn? – 2010-07-19 14:50:12

+0

我也很好奇 – 2010-07-19 14:53:56

+1

@Zachary:在我看来,我并没有移动这个项目:我被我开发这个项目的人问到将它放到他们的SVN中。而且,理想情况下,我想保留历史。我将来会继续使用GIT进行开发,但随后会定期推送到他们的SVN。把所有东西*以某种方式*到SVN中,并用GIT检查出来对我来说也不错。 – mark 2010-07-19 16:00:18

回答

2

谷歌有一个非常详细的教程,如何做到这一点here。它用于导入Google代码,但可用于任何svn回购。

+0

像魅力一样工作,谢谢! – mark 2010-07-19 21:39:58

+1

不幸的是,该页面不再存在。你知道另一个资源吗? – exilit 2016-03-08 13:57:29

0
  1. 用一些提交设置空的SVN项目。
  2. “git svn clone”它。
  3. 在几乎空的git-svn项目中导入历史记录(此处为rebase)
  4. “git svn dcommit”。

问题:

  1. 时间戳被打破,作者姓名被破坏。
  2. “git svn dcommit”在提交dcommit过多的情况下效果不佳。拆分为每包约20次提交是首选。
相关问题