Svn2Git - 将大型GIT回购推送到远程

时间:2013-07-29 15:36:06

标签: git svn bitbucket-server svn2git

我目前正在尝试将我们的大型Subversion存储库(大约25GB,包括历史记录)移植到GIT中,我似乎遇到了两个问题。其中一个我认为我已经解决了,但是如果我搞砸了第一个修复的话,我将覆盖两者的完整性;

Subversion存储库似乎没有遵循一致的分支模式,看起来这些年来模式发生了变化,所以首先我使用rootistrunk选项将整个repo转换为git:

svn2git http://svnurl/repo --rootistrunk --authors authors.txt

这有效但是回购太大而无法推送到远程,我收到了以下错误; [远程拒绝]主人 - > master(超出最大请求长度)

为了解决这个问题,我使用以下方法获取Subversion repo的一大块,希望我一次可以获得500次提交并解决大包装问题;

svn2git http://svnurl/repo --rootistrunk --authors authors.txt --revision 1:500

然后我推了它工作,然后我运行git svn fetch -r 501:1000以获得接下来的500次提交但是当我尝试推送这个最新的提取后,我收到一条消息,说“尽管是最新的”,尽管事实如此不可能是这种情况。

我已经搜索了git和svn2git的帮助文件,希望我能找到我做错了但是经过几天的研究我仍然没有解决方案,我是git的新手很可能我已经错过了一顶旧帽子的显而易见的东西。任何人都可以对我做错了吗?如果我做了一个错误的假设并且我做错了我会很高兴听到它,因为在这个阶段我不会感到惊讶!

我目前正在尝试推进TFS 2013项目和Stash回购,两者都显示相同的行为,所以我必须在GIT方面做错了。第一次推送在两种情况下都有效,只有第二种不希望接受新文件。我正在执行推送的服务器运行Ubuntu,TFS在Windows Server 2012上,而Stash在另一个Ubuntu盒子上。

欢迎任何提示,我对此感到困惑,不知道下一步该去哪里。

谢谢, 基根

1 个答案:

答案 0 :(得分:0)

首次导入后,请尝试以下操作: git svn rebase

但是,最好的方法,如果你的svn存储库真的很大(超过1GB),是避免导入所有的修订版。 我建议从更新的时间线开始,并将svn转储保存在安全的地方,如果有一天你真的想要看起来很旧的版本。

如果您选择从较新的时间轴导入,结果如下:

svn2git http://svnurl/repo --rootistrunk --authors authors.txt --revision 500:HEAD

当前500次提交未被拉到git时。