当前位置:   article > 正文

将SVN项目转移到GitLab且需要保留提交历史记录的解决方案_svn gitlab 同步

svn gitlab 同步


前言

公司之前是用的SVN来管理项目,但根据项目增多项目就有了分支等需求,使用SVN来管理已经满足不了项目管理的需求了,决定将SVN上的项目转移到GitLab上。


一、迁移准备

准备一台Linux系统,安装git-svn

yum install -y git-svn
  • 1

二、迁移过程

1.从SVN中获取项目提交用户名单

因为在git上每个提交需要有用户的提交信息,如邮箱,因此我们得先获取到SVN中所有的用户名,然后保存的users.txt中,格式如下:

VisualSVN Server = visualsvn <visualsvn@mail.com>
zhangshan = zhangshan <zhangshan@gmail.com>
lisi = lisi <lisi@gmail.com>
  • 1
  • 2
  • 3

这里需要注意,一般会忘记录入 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
  • 1
  • 2
  • 3

会生成如下结构的用户账号信息,只需要补齐后面git上的账号即可。

VisualSVN Server =
zhangshan =
lisi =
  • 1
  • 2
  • 3

2.使用git svn clone拉取SVN项目到本地

git svn clone https://192.168.1.100/svn/erp/ --authors-file=/root/users.txt erp
  • 1

参数说明:
svn_address 即为待迁移svn的工程地址;
–authors-file 指定用户映射文件,即第一步里生成的文件;
local_dir 为本地存放该svn工程目录,若不存在,git会自行创建;
–username 即为使用指定用户拉取代码,因此该用户必须要有拉取代码的权限。

网上有的参考资料,说加“–no-metadata”防止git拉取无用的SVN附加信息,若想后续使用SVN提交代码的建议不要添加这个参数,不然无法运行git svn rebase同步svn代码带git上

3.使用git remote添加git服务器地址

cd erp/
git remote add origin ssh://git@192.168.1.102/zhangshan/erp.git
  • 1
  • 2

4.提交代码到git库

git push origin --all
  • 1

5. 后续同步SVN代码到GitLab中

git svn rebase && git push origin --all
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/670227
推荐阅读
相关标签
  

闽ICP备14008679号