TortoiseSVN迁移到本地git

发布于:2024-08-02 ⋅ 阅读:(37) ⋅ 点赞:(0)

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远端库地址,就能看到完整代码了~