SVN迁移至Git,保留SVN历史提交记录

  • Post author:
  • Post category:其他


一、准备


1.git安装


Git – Downloading Package


2.git全局账号配置

任意磁盘目录->鼠标右键->Git Bash Here  进入git命令行,输入如下命令:

(第一条设置github下注册的用户名,第二条设置github下注册的邮箱)



git config –global user.name “userid”



git config –global user.email “xxx@xxx.com”


3.查看配置



git config –list


4.svn账号与git账号做映射

首先准备一个userinfo.txt,设置svn账户与git账户的对应关系:

(注:svn账号在svn中有记录,但无git账号,提交记录中涉及到的svn账号需要全部列举出来,否则会报错。) 格式如下

zhangsan = zhangsan<zhangsan@

xxx.com

>

lisi = lisi<lisi@

xxx.com

>


二、导出SVN项目至本地

1.在存放userinfo.txt的同级目录下新建一个项目文件夹

2.鼠标右键->Git Bash Here  进入git命令行:(如果项目版本和提交记录过多,这个过程可能持续时间很久很久,毫不夸张本人曾经迁移过10多年的超大项目,clone到本地足足花了两天两夜)

注:

-r 10010:HEAD

代表从svn的10010版本到最新版本的提交记录,避免从第一个版本拉取数据量过大,操作耗时过长。如果需要拉取所有记录,可去除 -r 10010:HEAD

svn://<url> 是svn项目地址
<project> 本地工程目录路径名称
-s 告诉 Git 该 Subversion 仓库遵循了基本的分支和标签命名法则,也就是标准布局。

如果你的主干(trunk,相当于非分布式版本控制里的master分支,代表开发的主线),分支(branches)或者标签(tags)以不同的方式命名,则应做出相应改变。

-s参数其实是-T trunk -b branches -t tags的缩写,这些参数告诉git这些文件夹与git分支、tag、master的对应关系。

--prefix=svn/

给svn的所有remote名称增加了一个前缀svn,这样比较统一,

而且可以防止

warning: refname 'xxx' is ambiguous.


三、关联git远程仓库

1. clone 成功后,输入如下命令:

cd <project>  cd到刚clone完成的工程目录

git remote add origin git://url

注:git://url是你的git项目地址,ssh链接方式git开头,http方式用http开头

2. 查看关联情况:

git remote -v

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

git remote remove origin


四、提交记录至git

提交记录之前,先拉取远程git项目文件(

README.md

),否则直接提交会报错

git pull –rebase origin master

拉取成功后,执行push命令

git push origin master



版权声明:本文为lgfrank9原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。