TortoiseSVN迁移到本地git
文章目录
0 背景
之前在前东家工作都是采用git进行项目管理,高效便捷,而现在的工作过程中是采用SVN对项目代码进行管理,采用TortoiseSVN小乌龟在windows下进行版本控制,开发代码起来优点说不出的变扭,趁着今天有时间操作把TortoiseSVN上的项目迁移到Git上。
1 环境准备
- Git,我当前是在windows上操作,下载对应版本即可;网上说需要git svn之类的,我没有额外安装,应该就会自带;
- VisualSVN,SVN的库管理工具,我选的是64位版本;
- TortoiseSVN,小乌龟版本管理工具,我也是下载的64位;
- TortoiseGit(可选),Git界面管理工具,方便后续git做版本管理时是用;
可以使用下面两个命令检查git是否安装:
git --version
git svn --version
2 SVN库迁移到VisualSVN
windows上直接操作svn库迁移到git,可能会出现无法识别“file:///xxxx”路径的问题(没错,就是我遇上了)。
就是这个URL!在windows执行git svn clone命令时会一直失败,如图所示:
于是我才用了一种曲线救国方式,通过把库迁移到VisualSVN,通过VisualSVN把URL折射成http的格式,然后进行映射操作:
2.1 导出dump
首先是需要把当前SVN库先dump出来,然后才能导入到VisualSVN
执行代码:
svnadmin dump [svn库物理地址] > svnproject.dump
注意:这里有个坑,不是填svn的URL,而是对用svn库的物理地址;
执行情况如下:
执行完说明导出是OK的。
2.2 将dump文件灌入VisualSVN
导出ok后,记住dump文件对应地址,现在需要把导出的文件灌入到VisualSVN里面去,当然需要先创建一个空仓来存储。
执行代码:
svnadmin load "[空仓路径]" < svnproject.dump
执行情况截图如下:
输出完说明导入成功!里面会打印各个版本号,也可以通过检查灌入是否正常~
2.3 获取SVN仓最新URL
这里会提示输入用户名、密码,设置一个自己能记住的就行,后面也会用到;然后你就会发现剪切板里面的URL变成了:http://xxxxx,证明这一步已经成功;
3 迁移到Git库中
执行命令:
git svn clone [svn的URL] --stdlayout [Git库路径]
执行成功会打印下面这串,等几分钟执行打印完即可。
4 迁移分支到Git库
咱们开发代码过程中经常需要用到分支,上述操作能够把主干代码同步过去,但是分支的地方还不行,这里只需要一个命令就可以搞定:
git svn fetch
下载后,需要在git上创建对应分支:
for branch in $(git branch -r | grep -v '/tags/' | grep -v '/trunk'); do
git branch ${branch#origin/} $branch
done
搞定,看下效果:
这个时候也能用git log看下日志是否正常,可以看到所有分支的commit都已经同步过来了~
大功告成~
5 创建本地远端库
很多朋友在公司开发代码是不允许上传到外网的,只能在内网进行访问,那么就可以在本地搭建一个远端库进行代码管理。推送GitHub的操作网上已经有很多教程,这里不再赘述。本文介绍如何在本地快速创建仓库并推送远端;
创建空仓
首先,在本地或者内网服务器上创建一个空文件夹,然后创建一个空仓:
git init --bare
关联空仓
在当前项目的git目录下添加远端库:
git remote add origin [远端库路径]
推送代码
保存本地修改的代码,推送到远端仓库
git push -u origin master
如果你是第一次操作且分支比较多时,可以一个命令推送所有本地分支:
git push --all origin
当然也可以推送所有标签(如有)
git push --tags origin
这个时候在另一个新目录clone远端库地址,就能看到完整代码了~