SVN仓库迁移至Git,保留commit提交记录

最近公司要将SVN服务迁移,前段时间刚把SVN服务从windows服务器迁移到Linux。

现在项目越来越多,加之SVN的集中式管理,不支持分布式,分支切换麻烦,Git支持分布式开发,快照式数据,速度快,主干分支切换方便。给领导建议了一下把仓库迁移到git,领导的要求就是可以迁移,但是不能丢提交记录。经过自己的研究尝试,最终把SVN仓库成功迁移到git,下面将迁移过程分享出来。

一.软件安装及git配置

1.git安装

2.gitlab安装(我们使用的gogs,具体根据公司内部的架构和情况选择,中小企业,并且团规规模不是很大的情况下gogs是足够使用了)

3.git账号配置

在你准备作为git本地仓库的文件夹目录->鼠标右键->Git Bash Here  进入git命令行,

      输入如下命令:

      git config --global user.name "username"

      git config --global user.email "[email protected]"

      username是gitlab下注册的用户名,[email protected]是gitlab下注册的邮箱

      查看配置:

      git config --list

   4.svn账号与git账号映射

     在当前文件夹下创建文件userinfo.txt,文件内容如下斜体:   (注:svn账号3在svn中有记录,但无git账号,提交记录中涉及到的svn账号需要全部列举出来,否则会报错。提交记录可以选择指定记录到最新记录,下面会有说明)

svn用户名1=git用户名1<git邮箱[email protected]>
svn用户名2=git用户名2<git邮箱[email protected]>
svn用户名3=git用户名3<git邮箱[email protected]>

 

二. svn项目导出到本地git仓库

1.在存放userinfo.txt的同级目录下新建一个文件夹,名称最好命名成你的项目名称

2.继续在Git Bash执行下面命令:

git svn clone -r 1126:HEAD svnurl --no-metadata --authors-file=userinfo.txt template

注:此处的 -r 1126:HEAD 代表从svn的1126版本到最新版本的提交记录,避免从第一个版本拉取数据量过大,操作耗时高。svnurl是你的svn项目地址。如果需要拉取所有记录,可去除 -r 1126:HEAD 

此处执行命令后会弹出一个窗口,需要登录两次,第一次是登录本地电脑,使用你本地的计算机用户和密码就好;第二步是登录gitlab的用户名密码,这个根据自己注册的用户密码填写就好。

三、在gitlab上创建仓库(我们用的是gogs)

下图红框的地址为后面使用的giturl

 

四、关联git远程仓库

导入成功后,输入如下命令:

cd template

git remote add origin giturl

注:giturl是你的git项目地址

查看关联情况:

git remote -v

如果关联有误,可以删除关联

git remote rm origin

五、提交记录至git

提交记录之前,先拉取远程git项目文件(README.md),否则直接提交会报错。若仓库中没有文件,执行此步没有提示。

git pull --rebase origin master

拉取成功后,执行push命令

git push -u origin master
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章