1、环境准备
sudo apt-get install git-svn1
2、创建用户映射
在 Subversion,每个提交者在都在主机上有一个用户名,记录在提交信息中. 比如 blame 的输出以及 git svn log。
如果想让这条信息更好的映射到 Git 作者数据里,则需要从 SVN 用户名到 Git 作者的一个映射关系建立一个叫做 user.txt 的文件,用如下格式表示映射关系:
zhangsan = zhangsan <zhangsan@gmail>
lisi = lisi <lisi@gmail>
wangwu = wangwu <wangwu@gmail>123
在svn库下执行该命令可以在当前文件夹生成users.txt,获得 SVN 作者的列表:
svn log ^/ --xml | grep -P "^<author" | sort -u | perl -pe 's/<author>(.*?)<\/author>/$1 = /' > users.txt1
根据svn帐号与git帐号的映射,补充users.txt为上述格式。
3、获取SVN的仓库到本地
通过 git svn clone 命令可以把整个 SVN 仓库导入到一个本地的 git 仓库中, 但这样导入的代码提交历史很糟糕, 需要做一些处理. 在 clone 后面添加 –no-metadata 来阻止 git svn 包含那些 SVN 的附加信息。
同时为了获得更精确的提交者 ID 和邮箱, 添加 –authors-file 参数
git svn clone svn://ip端口/projectname --no-metadata --authors-file=users.txt projectname
cd projectname12
4、在GitLab上创建Git仓库
为 GitLab 上为 SVN 仓库创建对应的 Git 仓库,会生成如下的仓库地址:
git@gitlab:<group>/<projectname>.git1
5、添加远程git仓库
在本地,将上面创建的仓库服务器添加为远程服务器并且向它推送。
下面是新增远程服务器的例子:
git remote add origin git@gitlab:<group>/<projectname>.git1
6、 提交代码到git仓库
通过以下命令将本地代码提交到远程git仓库:
git push -u origin master