SVN源码迁移到GIT

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Hanoch_wang/article/details/98240974

今天接到任务要把部门一个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

扫描二维码关注公众号,回复: 7628109 查看本文章

猜你喜欢

转载自blog.csdn.net/Hanoch_wang/article/details/98240974