SVN源码迁移到GIT

今天接到任务要把部门一个svn项目迁移到git上去,这对我这个菜鸟来说还是比较难受的。因为我git学了个半吊子,svn又完全没有接触过,但是没办法,硬着头皮也得上啊。

花了一个小时的时间在网上查了各种关于svn的教程,然后又简单了解了svn与git的不同之处,幸亏大佬又给我了帮助文档,在万分感激中开始迁移工作。

首先,需要知道项目的svn链接,这里假设项目路径为svn://practice。同时确保你要迁移的git项目已经创建,没有就创建一个喽,这里假设git仓库的地址为http://test.git。

在你本地选定的仓库下执行如下命令,这里假设本地仓库的名字叫做gittest。

git svn clone svn://practice --authors-file=authors.txt --no-Metadata  gittest

关于--authors-file=authors.txt 和--no-Metadata可以参考如下链接https://git-scm.com/book/zh/v2/Git-与其他系统-迁移到-Git

进入到gittest目录下,接下来将refs/remotes 下剩余的引用移动为本地分支:

rm -Rf .git/refs/remotes

现在所有的旧分支都是真正的 Git 分支,并且所有的旧标签都是真正的 Git 标签。 最后一件要做的事情是,将你的新 Git 服务器添加为远程仓库并推送到上面。 下面是一个将你的服务器添加为远程仓库的例子:

$ git remote add origin http://test.git

因为想要上传所有分支与标签,你现在可以运行:

$ git push origin --all

到此,你的项目因该已经上传到git上了。

但是还存在着一些问题,由于开发流程的不规范,有些原svn上的代码与线上代码不一致,以后要走git的发布流程必须保证git上的代码与线上的代码一致,此时可以拉取线上的代码重新上传git仓库,过程如下:
我现在只想要py和go的脚本,不想要其他一些无关的日志文件,而且tmp目录的所有文件我都不想让它出现在项目里。刚开始我用如下的命令打包线上代码
 

sudo find /data/test -path "/data/test/tmp"  -prune -o -name "*.py"  -o -name "*.go" | xargs tar  -czvPf  gittest.tar.gz

关于这条命令的细节可以参考https://blog.csdn.net/u011517841/article/details/53204524,-path 显示除当前目录之外的所有文件,如果/data/test/tmp存在,则-prune

相关文章

首先介绍下什么是git和svnGIT(分布式版本控制系统)Git(读音...
注意点:系统环境:centos7,python,django,svn,jenkins首先安装...
  我使用过的版本控制工具有两种:早期的时候使用的是SVN,...
用好Git和SVN,轻松驾驭版本管理本文从Git与SVN的对比入手,...
01.jenkins安装jenkins网站:https://jenkins.io/安装:资料...
软件环境:centos7jdk1.8svn1.9maven3.5tomcat8jenkins2.80 ...