subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
就这些了。
+ 要从SVN更新,首先使用第一条命令创建一个Git存储库。
subgit import directory/path/Local.git.Repo
我曾使用一种方法,快速将一个大型仓库迁移到Git。当然,你需要做一些准备工作,但完全不需要停止开发过程。
这是我的解决方案:
- 将SVN迁移到Git仓库
- 在团队切换之前更新Git仓库
对于一个大型的SVN仓库,迁移可能需要很长时间。但完成迁移后的更新只需几秒钟。
当然,我使用了SubGit,因为git-svn让我经常遭遇Git的蓝屏死机,而且还会让我遇到Git的“文件名过长”的致命错误。
步骤:
1. 下载SubGit
2. 准备迁移和更新命令。
假设我们在Windows上进行操作(转移到Linux非常简单)。在SubGit的安装目录下bin目录(subgit-2.X.X\bin)中,创建两个.bat文件。
迁移命令的文件/内容:
start subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
在Windows中,“start”命令是可选的。它可以让您在启动时查看错误,并在SubGit完成后保留一个终端。
您可以在此处添加类似于git-svn的其他参数。
我只使用--default-domain myCompanyDomain.com来修复SVN作者电子邮件地址的域。
我有标准的SVN存储库结构(trunk/branches/tags),并且我们没有遇到“作者映射”的问题。所以我什么也不用做了。
(如果您想迁移像分支一样的标签,或者您的SVN有多个分支/标签文件夹,则可以考虑使用更详细的SubGit方法)
提示1:使用--minimal-revision YourSvnRevNumber快速查看事物如何解决(某种调试方式)。
特别有用的是查看已解析的作者姓名或电子邮件地址。
或者限制迁移历史记录深度。
提示2:迁移可能会被中断(Ctrl+C),并通过运行下一个更新命令/文件进行恢复。
我不建议在大型存储库上这样做。我曾经收到“内存不足的Java+Windows异常”。
提示3:最好创建您的结果裸仓库的副本。
更新文件/命令的内容:
start subgit import directory/path/Local.git.Repo
想要获取最新团队提交到您的Git仓库,您可以随时运行它。
警告!不要触碰裸仓库(例如创建分支)。
否则会出现以下致命错误:
无法恢复的错误:失去同步,无法同步...将Subversion修订版转化为Git提交...
3. 运行第一个命令/文件。对于大型仓库,需要很长时间。我的小仓库需要30个小时。
就这些。
您可以通过运行第二个文件/命令随时随地更新您的Git仓库并切换开发团队到Git。
这只需几秒钟。
还有一项有用的任务。
将本地Git仓库推送到远程Git仓库
是您的情况吗?那么让我们开始吧。
- 配置您的远程仓库
运行:
$ git remote add origin url://your/repo.git
- 准备将您庞大的本地Git仓库发送到远程仓库
默认情况下,您的Git无法发送大块数据。
fatal: 远程主机意外挂断
让我们开始吧:
git config --global http.postBuffer 1073741824
524288000 - 500 MB
1073741824 - 1 GB, 等等。
修复本地的证书问题。如果你使用的是有问题的证书的Git服务器。
我已经禁用了证书。
此外,你的Git服务器可能存在需要纠正的请求次数限制。
- 将所有迁移推送到团队的远程Git仓库。
使用本地的Git运行:
git push origin --mirror
(对于旧版本的Git,使用 git push origin '*:*')
如果出现以下错误:error: cannot spawn git: No such file or directory... 对我来说,完整重建我的存储库解决了这个错误(花费30小时)。您可以尝试下面的命令。
git push origin --all
git push origin --tags
或者尝试 重新安装 Git(对我来说是无用的)。
或者您可以从所有标签创建分支并将它们推送。 或者,或者,或者...