【SVN】教你如何替换主干代码

2019-05-26 16:49:15 浏览数 (1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1435818

之前因为仅仅是写代码,所以svn的很多东西就不会涉及到,现在是有这么一个应用场景:svn的主干上面有一份代码,svn的分支上面也有一份代码,这两份代码是完全不一样的,所以不能仅仅用分支替换主干就可以了,替换也会出错的。在说问题的解决方法之前,我们先来聊聊产生这个问题的原因。

项目的第一个版本开发完之后,我们接着对这个项目进行架构升级,所以之前的项目就不能用了,我们就在分支上面新建了一个新的项目,项目的架构搭建完之后,就需要将新架构的代码放到主干上面,原先主干上面的代码要标记版本放到tags中。因为这种原因,所以我们需要将主干上面的代码替换成分支上新架构的代码。

应用场景说清楚了,接下来我们来具体聊聊解决办法。其实和分支合并到主干最大的区别就是,我们需要在合并之前将项目删除或者回到项目刚建的时候,然后再进行分支合并就可以了。当然再删除或者回滚之前一定要先将项目放入tags中,否则辛辛苦苦的写的代码可能会没了。。。。回滚项目之后我们就可以进行分支合并了,具体过程容我徐徐道来。

第一个步骤:在本地副本上进行操作,选择主干上的源代码文件,右键选择tortoiseSVN菜单,点击合并。(将trunk代码 拉回本地,checkout到本地。在trunk 代码上 使用merge)如图

第二个步骤:选择merge two different trees,如图,也可使用merge a range of revisions 但在报 from url must be ancestrally related to to url 错误的情况下选择使用第二种。

第三个步骤: 在from中选择 trunk 在to中选择 branches -> dev,由于是在trunk上把branches的代码合并过来,理所当然这里的”from”应该填trunk的路径,to选branches的路径。如图

第四个步骤:选择默认选项即可,建议合并merge时,使用test merge 来查看有多少冲突,如果冲突较多,可分多次合并,最后点击merge进行合并。合并成功后需要将主干(trunk)上合并过的文件提交到svn代码库,如图

  • 图中各项的含义:
  • -ignore ancestry : 忽略根源
  • -ignore line endings : 忽略行结尾
  • -compare whitespaces : 比较空白字符
  • -ignore whitespace changes : 忽略空白字符的变化
  • -ignore all whitespaces : 忽略所有空白字符

第五个步骤:确定合并后的代码,将主干(trunk)上合并过的文件提交commit到svn代码库

总结:

顺利的情况下过程大概就是这样,但是实际过程中肯定会出现很多问题,比如冲突、更新不了、合并不了等等的问题,这些问题我这边就不一一介绍了,大家实际遇到的时候再根据实际问题解决。有些人可能会问,未什么我在刚升级架构的时候不马上放到主干上面去呢,这是因为线上运行的版本是旧架构的项目,未了防止意外的bug出现,必须将项目留在主干上面,进行bug的快速修复。好了今天的课程就到这边了,后面的课程我会逐步和大家介绍SpringCloud微服务的内容,敬请期待~

0 人点赞