从Git转换代码库到Subversion

47

无论原因是什么,有没有一种合理的方法可以将整个 Git 存储库转换为 Subversion?

我只能找到大量关于从 Subversion 迁移到 Git,并在两者之间交换变更集的迁移信息,但是找不到有关将整个 Git 存储库简单转换为 svn 的信息。


1
将现有的Git仓库推送到SVN: - cmcginty
23
很遗憾你不得不提前说明“撇开做这件事的原因不谈”来避免争吵或其他纷争。 - Nicu Stiurca
2个回答

16

在将内容从Git转换到Subversion的过程中,通常存在一个问题,Git存储库可以包含不止线性修订历史记录,这是Subversion所期望的。多个祖先与不同历史记录以及频繁的合并提交都是可能的,这些在Subversion存储库中无法轻松表示。

对于简单情况,如果您的Git存储库具有线性历史记录,则可以使用git-svn dcommit将其推送到否则为空的Subversion存储库中。


2
很抱歉在几年后再次搅动这个话题,但您能否给出一个具体的示例来说明如何做到这一点呢?比如说我有一个 git 仓库的克隆版本位于 ~/my-git-repo,我想将提交历史复制到某个 SVN 仓库中,比如 svn://foo.com/empty-svn-repo/。 - Nicu Stiurca
1
@SchighSchagh:看看这个最近的问题,它可能更适合你的需求:是否可以从(完整的)git-svn克隆中重新创建svn存储库? - Greg Hewgill

6
很容易使用SubGit执行。
$ svnadmin create svn.repo
$ subgit configure svn.repo
$ nano svn.repo/conf/subgit.conf to specify a path to your bare repository (you may use "git clone --bare <URL>" if you have none locally)
$ subgit install svn.repo

转换后,您的SVN和关联的Git存储库将保持同步:每次Git推送都会被翻译为SVN提交,反之亦然。要中断翻译,请运行

$ subgit uninstall svn.repo

在翻译时,SubGit会尽可能保留提交日期、标签、忽略文件、合并、行尾符和分支等信息。但是对于git-svn仓库,情况则不同。

1
这个不起作用。请参考 https://dev59.com/FGXWa4cB1Zd3GeqPIwMI#11084905 了解一个可行的 subgit 解决方案。 - EML

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