svn迁移到gitlab
# svn迁移到gitlab
环境:Centos7
# 安装工具
yum install -y git git-svn subversion
# svn准备工作目录
mkdir -p /data/backup && cd /data/backup
1.备份检出svn代码
svn checkout --username yfk --password yfklife.cn https://192.168.5.221:8443/svn/iODS/trunk/C++ ./iODS
2.检出svn仓库,且保留svn仓库的commit等历史记录
svn co checkout --username yfk --password yfklife.cn https://192.168.5.221:8443/svn/iODS/trunk/C++ ./iODSCommit
3.获取svn仓库有过commit的提交用户名列表
cd iODSCommit && svn log --xml | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /' > /data/backup/user.txt
4.修改用户txt文件
将SVN账号和gitlab账号用=号一一对应起来,在gitlab里面创建svn出现过的用户
[root@basic iODSCommit]# cat /data/backup/user.txt
zhangsan = "zhangsan" <zhangsan@yfklife.cn>
lisi = "lisi" <lisi@yfklife.cn>
VisualSVN Server = "visualsvn" <visualsvn@yfklife.cn>
wangwu = "wangwu" <wangwu@yfklife.cn>
5.将svn仓库转换为git仓库
这个过程是个漫长的等待(svn拉取代码大概1.7G,git转换出来大概300多M,提交记录2千多个,转换耗时大概5小时)
cd /data/backup && git svn clone https://192.168.5.221:8443/svn/iODS/trunk/C++ --authors-file=/data/backup/user.txt --no-metadata NewC++
# 创建gitlab仓库,将本地新仓库推送到gitlab
创建gitlab仓库"gameC++",添加仓库,推送代码,
cd NewC++
git remote add origin-new http://git.yfklife.cn/game/gameC++.git
git push origin-new --all
2
3