1. 安装svn2git工具(自己找一台服务器)

#安装svn2git。在所有系统上,如果您已经安装了Ruby和Git,您可以将它们安装为Ruby gem。

gem install svn2git

2. svn库中导出作者文件authors.txt

#准备一个作者文件,以便svn2git将SVN作者映射到Git作者。如果您选择不创建作者文件,则提交不会归因于正确的GitLab用户。有些用户可能不认为这是一个大问题,而另一些用户则希望确保他们完成这一步骤。如果您选择映射作者,则需要将存在于SVN存储库中的更改的每个作者映射。如果你不这样做,转换将失败,你将不得不相应地更新作者文件。以下命令将搜索存储库并输出作者列表。

#如果有svn的账号和密码自己添加一下 --user --password

#这一步会将你项目中的作者记录下来输出
svn log  https://svn.testcompany.com/svn/company/dev --quiet | grep -E "r[0-9]+ \| .+ \|" | cut -d'|' -f2 | sed 's/ //g' | sort | uniq  >/tmp/authors.txt

#使用最后一条命令的输出来构建作者文件。创建一个名为的文件,authors.txt并为每行添加一个映射。
vim /tmp/authors.txt

janedoe = Jane Doe <janedoe@example.com>
johndoe = John Doe <johndoe@example.com>
alexdoe = Alex Doe <alexdoe@example.com>

3. 如果你的SVN仓库是标准格式(中继,分支,标签,而不是嵌套),转换很简单。有关非标准存储库,请参阅

#svn2git文档  https://github.com/nirvdrum/svn2git 。以下命令将检出存储库并在当前工作目录中执行转换。确保在运行该svn2git命令之前为每个存储库创建一个新目录。转换过程需要一些时间。

#创建一个目录测试拉取转换效果
mkdir /data/Repository/test1 -p

cd /data/Repository/test1

#老样子,如果需要用户和密码 加入参数 --user --password
svn2git https://svn.testcompany.com/svn/company/dev --authors /tmp/authors.txt

4. 创建一个新的GitLab项目,您最终将推送您的转换后的代码。从项目页面复制SSH或HTTP(S)存储库URL。将GitLab存储库添加为Git远程并推送所有更改。这将推动所有提交,分支和标签。

#gitlab上自己创建一下测试组,和项目目录,然后执行下面上传指令

git remote add origin git@git.testcompany.com:test/development.git
git push --all origin
git push --tags origin

5.大佬们如果有问题,记得提出来,要分享