公司所有的项目都在 SVN 上,现在需要将 SVN 的项目迁移至 Gitlab 上面。如直接迁移,很简单,但是会丢失提交历史记录,这不是我们想要的;
我们要保留 SVN 的提交历史记录,并且一并迁移至 Gitlab 上面,能够快速的完成对接工作;
安装 git-svn
yum -y install git-svn
导出 SVN 中所有的账号
svn log svn://ip:端口/Project -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2"="$2" <"$2"@qq.com>"}' | sort -u > ./svn2git.txt
注:我这里使用的是 @qq.com 邮箱,可自行更换,svn2git.txt 文件也可自行更换;
会生成一个 svn2git.txt 文件,里面可自行更改;如遇到 Author: payne not defined in 请注意,你是否动过里面的对应格式;
迁移语句:
git svn clone svn://ip:端口/Project --no-metadata --authors-file=svn2git.txt SCMBar
- 参数–no-metadata表示阻止git导出SVN包含的一些无用信息
- 参数–authors-file表示SVN账号映射到git账号文件,所有svn作者都要做映射
最后等待 Git 迁移完成
remote git 项目
git remote add origin <你的git项目地址>
推送项目
git push -u origin master