运维必备-将代码从SVN迁移至GitLab

部署安装

图片[1]-运维必备-将代码从SVN迁移至GitLab-不念博客

下载代码

例如:

svn checkout http://svn.konka.com/svn/portal/KKUpgradeServer

获取所有提交人的账号名称

Dean@jenkins_6_10:~/sources/KKUpgradeServer$ cd KKUpgradeServer 
# 获取账号信息,打印到userinfo.txt中
Dean@jenkins_6_10:~/sources/KKUpgradeServer$ svn log --xml | grep "^<author" | sort -u | awk -F '<author>' '{print $2}' | awk -F '</author>' '{print $1}' > userinfo.txt

# 打印userinfo.txt(隐私关系,仅打印我自己)
Dean@jenkins_6_10:~/sources/KKUpgradeServer$ cat userinfo.txt
Dean

设置账号映射关系

格式:用户名=用户名 <邮箱>

gongjianjun@jenkins_6_10:~/sources/KKUpgradeServer$ cat userinfo.txt
gongjianjun=gongjianjun <gongjianjun@konka.com>

svn转换git

若代码仓库无需转换分支,则直接使用以下命令,其中:

①:-r 2466:HEAD :转换从代码仓库的第2466次提交 =》 最新的提交

②:–authors-file :指定刚才账号映射关系文件

git svn clone -r 2466:HEAD "http://svn.konka.com/svn/A_ChildrenLock/" --no-metadata  --no-minimize-url --authors-file="userinfo.txt" A_ChildrenLock

若代码仓库需要转换分支,则使用以下命令,其中:

①:–trunk :指定目录为转换后的master分支,使用该命令后,转换后的代码仓库目录结构为该目录下的目录结构

②:–branch:扫描指定目录下的分支文件夹,使该文件夹为git的分支branch

③:–tags:由于测试i项目没有tag,因此转换后未生成tag

 git svn clone -r 1:HEAD "http://svn.konka.com/svn/A_ChildrenLock/" --authors-file="A_ChildrenLock_userinfo.txt" --no-metadata --trunk=sourcecode/trunk/ChildrenLock3.1-TNT --branches=sourcecode/trunk --tags=sourcecode/tags A_ChildrenLock --no-minimize-url

提交代码

转换后,git branch查看当前目录所有分支,如下图所示:

图片[2]-运维必备-将代码从SVN迁移至GitLab-不念博客

注意:转换后的分支可能较多,因此需要查看原svn仓库branch的目录结构,选择性的提交分支,如:推送【ChildrenLock2.0】分支

# 切换分支为remotes/origin/ChildrenLock2.0,并命名本地分支名为ChildrenLock2.0
git checkout remotes/origin/ChildrenLock2.0 -b ChildrenLock2.0

# 强制推送当前分支

推送分支

git push -u origin --all -f

重复【切换分支,推送】操作,即可迁移成功

© 版权声明
THE END