SVN commit 导入 Git

本文档详细介绍了如何在Ubuntu16.04环境中将SVN项目迁移到Gitlab,包括安装配置Git和Subversion,使用git-svn工具转换提交历史,以及设置SSH密钥,最后将代码推送到Git仓库。整个过程旨在保持SVN的提交记录,简化迁移步骤。
摘要由CSDN通过智能技术生成

最近项目代码计划从 SVN 切换到 Gitlab,研究了下可以把 SVN 的 commit 也迁移到 Git 中,这样方便了很多。

系统环境

我的操作环境是 Ubuntu 16.04 64位,系统语言是简体中文。

安装配置 Git

此处使用 apt-get 安装 git,也可以从源码编译安装。

sudo apt-get install git

全局配置 git 账户

git config --global user.name "cikai"
git config --global user.email "cikai0923@foxmail.com"

生成 SSH 密钥

ssh-keygen -r rsa -C "cikai0923@foxmail.com"

一路回车,最终生成了 id_rsa.pub 公钥文件,复制里面的内容,填写到 Gitlab 中即可。

vim ~/.ssh/id_rsa.pub

安装配置 Subversion

Ubuntu 上非常方便的SVN工具,此处继续使用 apt-get 安装。

sudo apt-get install subversion

git-svn 工具

这里用到了 Ubuntu 下的一个 git 工具叫 git-svn,通过 apt-get 安装即可。

sudo apt-get install git-svn

下载 SVN 项目代码

svn checkout http://host:port/svn/branches/test_project_svn

列出 SVN 工程中所有提交者的信息

svn log --xml | grep author | sort -u | perl -pe 's/.>(.?)<./$1 = /'

上面的命令会得到一下结果:

CiKai

Tom

Jerry

将 SVN 的用户格式手动改写成 Git 格式

手动修改成下面的格式,并保存在 users.txt 文件中。

注意:等号左边是 SVN 用户名,右边是 Gitlab 用户名,有时两个名称并不一致。

CiKai = cikaicikai0923@foxmail.com
Tom = tomtom@gmail.com
Jerry = jerryjerry@gmail.com

重新下载代码,进行 SVN commit 向 Git 的转换

git svn clone --no-metadata -A users.txt http://host:port/svn/branches/test_project_svn test_project_git

这里工具会自动完成转换,需要等待片刻。

关联远程 Git 仓库,提交代码

上一步完成后,新工程文件夹 test_project_git 自动创建一个空的 Git 工程,默认 master 分支。

关联远程 Git 仓库:

git remote add origin ssh://git@host:port/git/test_project_git.git

创建本地 develop 分支:

git checkout -b develop

拉取远程 develop 分支,并和本地 develop 分支代码合并:

git pull origin develop

这里需要手动完成 Merge 信息的处理,保存。

提交代码到远程 Git 仓库

git push -u origin develop

至此,我们完成了 SVN commit 向 Git 的迁移工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值