2015-06-11 57 views
4

我下载的SVN仓库与添加从SVN项目旧的历史与GIT SVN

git svn clone -s svn+ssh://svn.dummy.com -r666666:HEAD 

现在我想旧的历史添加到项目中。我以后可以这样做吗?还是必须重新下载整个项目?

我基本上想要实现的是检查一个包含其历史的巨大包。 git svn总是在某些时候崩溃。 SubGit对svn + ssh完全不起作用(对我来说)。替代品是受欢迎的。

+1

'git svn'通常会在某个时间点崩溃,但只要完成了'git svn fetch',就可以简单地重新开始,直到您拥有完整的历史记录。 – onionjake

+1

KDE的svn2git工具能够处理非常大的Subversion存储库。 http://www.midwesternmac.com/blogs/jeff-geerling/switching-svn-repository-svn2git – onionjake

+1

@onionjake'git svn fetch'有时会恢复,但在某些时候停止工作。我从来没有设法得到这个庞大的存储库的整个历史,而不会遇到perl错误。 – pfnuesel

回答

5

两条建议:从头开始导入/转换整个Subversion存储库,并使用SubGit进行转换。

以后可能会添加较旧的历史记录(两年前我做过),但它根本不好玩。需要满足一些要求才能成为可能,并且这个过程不是直截了当的。 git本身并不能帮助你,因为这是非常不寻常的操作。您可以在this article中一步一步找到整个工作流程。

更多的,它会混淆你的同事,因为提交标识符在过程中发生变化,他们将以重复提交(提交具有相同消息和文件更改但具有不同哈希)结束。

SubGitgit svn做了更好的转换。它生成的时间线看起来更像是原始的Subversion时间线。

+1

用'git svn'导入整个subversion历史将需要几天的时间。我试过了,但它总是在某些时候崩溃。这就是为什么我想逐渐添加更旧的历史。 SubGit会替换git svn吗?如果是这样,我会试一试。 – pfnuesel

+1

SubGit是一个独立的软件,可以作为一个双向的'svn''git'网关(将'svn'推到'svn'上''svn'支持或可以被翻译成某种方式),但它也可以是用于[从Subversion一次性导入Git](http://www.subgit.com/remote-book.html#7)。我的仓库只有大约300个提交(PHP文件,几个图像,没有大的二进制文件),并在几分钟内完成转换。我不知道它在大型软件仓库中的表现如何。试试看,也许它可以帮助你。 – axiac

+1

如果你在切片中将svn库转换为git,你可以使用'git remote'(连接repos)和'git rebase'(做实际的连接)轻松地连接它们。在这个过程中你会失去提交日期(作者日期不受影响)。我在答案中链接的冗长的文章是关于如何(在“rebase”之前备份它们)和恢复它们(之后)。 – axiac