最近逐步逐步的将公司的项目都从SVN往Git迁移了,但是想团队成员都能够一步到位就迁移到Git是不可能的,因为还有大部分人都还不会Git,所以整个过渡过程估计得大半年。
因此导致虽然项目迁移过来了,但是团队开发还是在SVN提交代码。所以得想个办法同步迁移之后继续在SVN提交的代码到Git来,不然到时候又得做一次迁移操作得多操蛋。
在网上查看了下资料,都是讲SVN迁移到Git的过程,并没有讲解迁移之后团队成员继续在SVN提交代码,然后需要同步最新的SVN提交记录到Git的过程,因此自己慢慢探索,居然成功了,现在写这篇博客自己记录记录。
一、同步迁移之后继续在SVN提交的代码到Git
第1步,通过git show-ref命令查看分支情况
[root@xtgl207940 trunk]# git show-ref
9caa27cc211162aeed6e944144f4c676d2f1dfe1 refs/heads/develop
9caa27cc211162aeed6e944144f4c676d2f1dfe1 refs/heads/master
0ba94e3383d6f478844b1e674465fbc6ae0277e3 refs/remotes/git-svn
9caa27cc211162aeed6e944144f4c676d2f1dfe1 refs/remotes/origin/develop
62333dcb3beeb73e28538f815abfdfe791b88c00 refs/remotes/origin/local-git-svn
9caa27cc211162aeed6e944144f4c676d2f1dfe1 refs/remotes/origin/master
通过上面的操作,我们可以看到有个远程分支remotes/git-svn,
从图中可以看到该远程分支remotes/git-svn对应的就是git clone 迁移时候的svn仓库。因此可以在本地建立一个分支 local-git-svn,然后同步svn的提交记录
第2步,建立本地分支 local-git-svn 对应远程分支git-svn
[root@xtgl207940 trunk]# git checkout -b local-git-svn remotes/git-svn
切换到一个新分支 'local-git-svn'
第3步,同步svn最新的提交记录
使用 git svn fetch
命令同步SVN最新的提交记录,然后可以通过 git log
命令查看git的提交记录对应的svn记录相同。
[root@xtgl207940 trunk]# git svn fetch
[root@xtgl207940 trunk]# git log
第4步,切换分支到master分支,然后merge刚才的local-git-svn分支
通过git log 命令查看提交记录,发现已经同步了最新的SVN仓库提交记录。
第5步,提交master分支到GitLab远程仓库
git push -u origin master
第6步,查看gitlab上的代码
查看gitlab上,可以发现已经同步迁移之后继续在SVN提交的代码到GitLab
反复同步迁移之后继续在SVN提交的代码到Git
当同步完成之后,还是会有人继续在svn提交,因此我们要继续同步迁移之后继续在SVN提交的代码到Git
第1步:删除分支 local-git-svn
第2步:重复上面的操作来一遍
查看gitlab上 刚刚同步的最新svn提交记录,如下所示:
作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:http://blog.csdn.net/ouyang_peng/article/details/76220621如果本文对您有所帮助,欢迎您扫码下图所示的支付宝和微信支付二维码对本文进行打赏。