1

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

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

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

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

为了解决这个问题,我使用以下方法获取了 Subversion 存储库的一部分,希望一次可以得到 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 repo,两者都表现出相同的行为,所以我一定在 GIT 方面做错了。第一次推送在这两种情况下都有效,只有第二次不想接受新文件。我正在执行推送的服务器运行 Ubuntu,TFS 在 Windows Server 2012 上,而 Stash 在另一个 Ubuntu 机器上。

欢迎任何提示,我现在很困惑,不知道下一步该去哪里。

谢谢,基冈

4

1 回答 1

0

第一次导入后,试试这个: git svn rebase

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

如果您选择从更新的时间线导入,结果如下所示:

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

当前 500 个提交没有被拉到 git 时。

于 2013-07-29T20:54:15.880 回答