背景
公司内部新搭建了gitlab代码仓库,决定把原来SVN上的项目迁移到gitlab上,同时需要保留每个账户在SVN上的提交记录。我的迁移是在macOS上完成的。
迁移步骤
###1.安装git-svn工具
centos系统可以使用下面的命令安装:
1 | yum install -y git-svn |
macOS系统原来已经安装过git,可以直接使用git svn
命令
###2.获取SVN提交用户名
建立users文件来保存SVN和gitlab账号直接的关联,格式为svn用户名 = gitlab用户名,如:
1 | san.zhang = san.zhang <san.zhang@xxx.com> |
cd到待迁移项目的根目录执行下面的命令可以快速生成users:
1 | svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2"@xxx.com>"}' | sort -u > users |
说明: `@xxx.com`后缀可以换成自己公司内部邮箱后缀
3.检出svn项目到本地
把svn项目trunk下的文件和文件夹先检出到本地的一个目录(目录名字可以随便取,例如 projectToGitlab),如果需要迁移其他分支的代码,可以把trunk改成分支名字。
1 | git svn clone https://svn.xxx.com/svn/projectName/trunk projectToGitlab --no-metadata --authors-file=users |
4.添加远程gitlab库
先在gitlab上创建相应的工程,设置好相关权限,使用git remote命令添加远程服务器:
1 | cd projectToGitlab |
说明:http://git.xxx.com/department/projectName.git
是项目的gitlab地址,通过http协议访问
5.上传代码到gitlab
1 | git push origin master |
至此就完成了从 SVN 到 GitLab 的迁移,并且是包含了 SVN 提交记录的。