赞
踩
公司之前是用的SVN来管理项目,但根据项目增多项目就有了分支等需求,使用SVN来管理已经满足不了项目管理的需求了,决定将SVN上的项目转移到GitLab上。
准备一台Linux系统,安装git-svn
yum install -y git-svn
因为在git上每个提交需要有用户的提交信息,如邮箱,因此我们得先获取到SVN中所有的用户名,然后保存的users.txt中,格式如下:
VisualSVN Server = visualsvn <visualsvn@mail.com>
zhangshan = zhangshan <zhangshan@gmail.com>
lisi = lisi <lisi@gmail.com>
这里需要注意,一般会忘记录入 VisualSVN Server 这个用户名,通过svn服务器创建项目的默认用户。
如果不知道项目的有哪些用户名,可通过以下命令获取
svn co --username zhangshan --password 123456 https://192.168.1.100/svn/erp/ erp
cd erp
svn log --xml | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /' > /root/users.txt
会生成如下结构的用户账号信息,只需要补齐后面git上的账号即可。
VisualSVN Server =
zhangshan =
lisi =
git svn clone https://192.168.1.100/svn/erp/ --authors-file=/root/users.txt erp
参数说明:
svn_address 即为待迁移svn的工程地址;
–authors-file 指定用户映射文件,即第一步里生成的文件;
local_dir 为本地存放该svn工程目录,若不存在,git会自行创建;
–username 即为使用指定用户拉取代码,因此该用户必须要有拉取代码的权限。
网上有的参考资料,说加“–no-metadata”防止git拉取无用的SVN附加信息,若想后续使用SVN提交代码的建议不要添加这个参数,不然无法运行git svn rebase同步svn代码带git上;
cd erp/
git remote add origin ssh://git@192.168.1.102/zhangshan/erp.git
git push origin --all
git svn rebase && git push origin --all
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。