SVN迁移到GitLab
Posted WTech
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN迁移到GitLab相关的知识,希望对你有一定的参考价值。
走过路过不要错过
要求保留SVN上的提交记录
r2 | lisi | 2014-12-12 15:11:59 +0800 (五, 12 12月 2014) | 1 line
ssss
Author: zhangsan <zhangsan@qq.com>
Date: Thu Jan 16 11:28:30 2020 +0800
初始化意见反馈模块
commit 938ef83245f699c5c016b98ce454cffba3ce8eff
对比svn与git的日志记录,可以发现svn仅使用账号展示提交记录;而git不仅使用账号,还使用了邮箱进行确认。所以svn迁移到git,需要将二者进行对应转换。所以要先导出svn账号然后进行转换,转换格式:svn账号=GitLab账号 <邮箱>,这个格式是下一步git-svn要求的。将转换好的信息保存到一个文件中,每个账号占一行。因为日志信息是我们所关注的,所以我们只导出日志记录里的账号即可。使用下面这个命令可以快速完成账号提取、账号对应关系编写及保存操作:
svn log SVN项目的url -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2"="$2" <"$2"@example.com>"}' | sort -u > 账号对应关系文件
实例
~/Desktop$ svn log http://10.69.10.15:8080/svn/ai_project | awk -F '|' '/^r/ { sub(" ","",$2); sub(" $","",$2); print $2"="$2" <"$2"@example.com>"}' | sort -u > svn2gitlab.txt
1.下载并安装git-svn,方式一:在http://fr2.rpmfind.net/linux/rpm2html/search.php搜索git-svn,然后根据自己的平台选择下载安装。方式二:使用源来安装,如ubuntu:sudo apt-get install git-svn
2.执行命令:git svn clone "SVN项目url" --no-metadata --authors-file="账号对应关系文件" 自定义项目名,拉取项目,并使用账号对应关系文件将svn的提交记录转换为git提交记录。
正常的svn签出:
~/Desktop/H/ai_project$ ls -a
. app gradle local.properties key.sign proguard-project.txt .svn
.. build.gradle .gradle main.iml pda_svn.iml settings.gradle
使用git svn拉取的:
~/Desktop/TestSVN2Git/ai_project$ ls -a
. app .git .gradle main.iml pda_svn.iml settings.gradle
.. build.gradle gradle local.properties key.sign proguard-project.txt
从上面的对比可以看出git svn拉取的项目的.svn被转换成了.git,这其实就相当于将一个svn项目转换成git项目。
实例:
~/Desktop/TestSVN2Git$ git svn clone http://10.69.10.15:8080/svn/ai_project --no-metadata --authors-file=../svn2gitlab.txt ai_project
这里所要做的工作,完成就是本地git仓库迁移到远程git仓库所要做的工作了。
切换到使用git-svn拉取的项目目录下,通过以下几个步骤来完成代码的提交:
01
项目用户信息
git config --local user.name "GitLab用户名"
git config --local user.email "GitLab邮箱"
如:
~/Desktop/TestSVN2Git/ai_project$ git config --local user.name "Administrator"
~/Desktop/TestSVN2Git/ai_project$ git config --local user.email "admin@example.com"
02
创建空仓库
可以在GitLab web页面创建或使用GitLab API创建,可参考《本地git仓库迁移到远程git仓库》文章。(https://blog.csdn.net/weixin_40763897/article/details/105555429)
03
~/Desktop/TestSVN2Git/ai_project$ git remote add origin http://10.69.10.13/android/aiproject.git
04
推送远程 git push -u origin master
~/Desktop/TestSVN2Git/ai_project$ git push -u origin master
后记:
svn迁移git,大致就是通过git svn在拉取项目时使用账号对应关系文件将svn的提交记录转换为git提交记录,然后推送到新项目中去。
以上是关于SVN迁移到GitLab的主要内容,如果未能解决你的问题,请参考以下文章