zoukankan      html  css  js  c++  java
  • git学习——svn代码同步到git(3)

    git svn 同步

    最近接手的项目代码放在svn,但是svn推送分支的代价太高了,每个分支目录都是一次全拷贝,所以项目转用git进行版本管理。
    最傻的方法是新建git分支,将svn的代码作为源代码重新提交,但是这种方法没办法获取到svn的commit记录,这对版本追踪是不可忍的。所以放弃。
    第二种方式,是将svn的分支连同commit记录一起merge到git,然后再用git进行版本管理。

    参考资料:

    1、http://blog.csdn.net/ouyang_peng/article/details/76220621

    使用场景 :将已有的SVN项目迁移至git

    场景一: 从旧SVN项目同步代码至新的git项目

    注意:
    该步骤只有第一次迁移的时候才需要做,一旦迁移成功,所有svn的代码都应该由git更新,不应该直接在svn上提交,否则版本库会乱

    具体步骤

    1、 在git 创建对应的project
    2、 clone git项目
    3、 在.git/config中添加svn-remote,创建命令如下。

    [svn-remote "svn"]
    	url = http://svn.*****.com/***********/branches/release
    	fetch = :refs/remotes/git-svn-release
    

    4、 第三步中创建了一个名为svn的git-svn同步分支,该分支为所有其他git分支连接SVN代码库的桥梁,只有当需要将代码同步至SVN时才会往该分支合代码

    5、 从空的svn远程库中做初始化fetch,并将其作为一个新分支checkout

    git svn fetch svn 
    git checkout -b svn git-svn-release
    
    

    6、git show-ref命令查看分支情况

    到有个远程分支remotes/git-svn-release。

    7、 假设我们所有的开发分支最后都要合到develop分支上,我们就用develop分支和同步分支做交互。

    8、 checkout至develop分支,将svn分支merge进develop分支,这样SVN的代码库就原封不动连同日志一起在git中建立了起来。

    git checkout develop
    git merge svn --no-ff
    git commit
    

    场景二: 在已经使用git开发的情况下建立git到svn的同步机制

    如果上述场景一已经做完,作为一个开发,我现在只能拉到develop分支,我如何建立起这么一套同步机制呢?
    重做场景一中的前8步,这样使得我们本地有一个svn(和上面的并不是一个分支,没有联系),与之建立联系的是远程svn服务器上的git-svn分支
    此时的develop分支和svn分支是两条从一个根节点出发的线,这个跟节点就是场景一中第一次将 svn merge入develop的这次提交。
    虽然这两个分支最后当前的文件内容应该是相同的,但是git并不会这么认为,它会觉得这是两条截然不同的分支,为了能够让develop和svn建立起关系,需要再将develop和svn合并,把develop合入svn。

    git checkout svn
    git merge develop --no-ff
    

    场景三,将改动提交到svn

    已经建立git到svn的同步机制的情况下。

    git checkout svn
    git svn dcommit
    
  • 相关阅读:
    常用安卓开发技巧汇总
    安卓开发30:AsyncTask的用法
    JBoss AS7 快速配置
    抓包 把笔记本改造成无线路由器 —— 手机抓包牛刀小试
    Android系统手机端抓包方法
    ApkTool反编译apk,去除广告或者汉化后重新打包apk,并签名
    Android中如何像 360 一样优雅的杀死后台Service而不启动
    android service 的各种用法(IPC、AIDL)
    Android shell 下 busybox,clear,tcpdump、、众多命令的移植
    Servlet3.0中Servlet的使用
  • 原文地址:https://www.cnblogs.com/jaspersong/p/8029567.html
Copyright © 2011-2022 走看看