• 项目优化经验分享(六)SVN冲突和处理


        上一篇博客我们分享了新增需求的确定思想站在全局看问题》。今天我们来分享项目开发中SVN冲突的解决经验:SVN冲突和处理!

        引言

        开发过项目的人都知道,公司开发一个项目都会使用到版本号控制工具,版本号控制工具非常多,比方Clear case,CVS,Visual SourceSafe,SourceAnywhere ,StarTeam,SVN,CVS,GIT等等,有的是元老级开发工具,有的是后起之秀,各种版本号,百花齐放,这篇博客我们将要谈到的则是经常使用版本号控制工具:SVN的冲突和处理。

        实例  


        1.冲突产生

                如果A、B两个用户都在版本号号为1000的时候,更新了practice.txt这个文件,A用户在改动完毕之后提交practice.txt 到server,这个时候提交成功,然后practice.txt文件的版本号号已经变成1001了。同一时候B用户在版本号号为1000的practice.txt文件上作改动,改动完毕之后提交到server时,因为不是在当前最新的1001版本号上作的改动,所以导致提交失败。

               冲突发生时,subversion会在当前工作文件夹中保存全部的目标文件版本号[上次更新版本号、当前获取的版本号(即别人提交的版本号)、自己更新的版本号、目标文件]。

        (1)如今A、B两个用户都更新practice.txt文件到本地。

    1

        (2)文档中原始文件内容例如以下:

    2

        (3)A用户改动文件,加入内容“A用户改动-提交”完毕后提交到server

    4

        (4)B用户改动文件,加入内容“B用户改动-提交”完毕后提交到server

    6

        (5)B用户提交更新至server时提演示样例如以下:


        B用户将文件提交至server时,提示版本号过期:首先应该从版本号库更新版本号,然后去解决冲突,冲突解决后要运行svn resolved(解决),然后在签入到版本号库。在冲突解决之后,须要使用svn resolved(解决)来告诉subversion冲突解决,这样才干提交更新。

        2.冲突处理

        方法一:放弃自己的更新,使用svn Revert(回滚),然后提交。


        当使用svn revert时不须要再用svn resolved来删除暂时文件了,由于撤销会恢复全部的文件到改动前,除了已删除的文件。

        方法二:放弃自己的更新,使用别人的更新。使用最新获取的版本号覆盖目标文件,运行resolved filename并提交(选择文件—右键—解决);


        方法三:手动解决,冲突发生时,通过和其它用户沟通之后,手动更新目标文件。然后运行resolved filename来解除冲突,最后提交。

        (1)手工合并冲突文件:当查看了详细出冲突的文件后,能够打开该文件,找到冲突的标志。
          Top piece of bread
          Mayonnaise
          Lettuce
          Tomato
          Provolone
          <<<<<<< .mine
          Salami
          Mortadella
          Prosciutto
          =======
          Sauerkraut
          Grilled Chicken
          >>>>>>> .r2
          Creole Mustard
          Bottom piece of bread
          小于和大于符号之间的就是冲突的地方,假设有能力在改动完文件而且删除冲突标志之后,进行svn resolved来删除三个暂时文件
          注:假设改动时不是非常明确,能够參考冲突时的三个文件
     
        (2)复制某一工作文件(一般用的不是非常频繁):假设仅仅是希望取消本次的改动,你可拷贝svn为你生成的文件替换你的工作拷贝
          $ svn update
          C practice.txt
          Updated to revision 2.
          $ ls practice.*
          practice.txt practice.txt.mine practice.txt.r2 practice.txt.r1
          $ cp practice.txt.r2 practice.txt(这里r2是版本号库里你此次更新前的版本号文件)
          $ svn resolved practice.txt(用来删除三个暂时文件)


         OK!冲突解决!

    11

        提交更新!



        总结

        有时候冲突是不可避免的,可是我们能够尽量减少冲突的复杂度,详细解决方案有: 

        1、当文档编辑完毕后,尽快提交,频繁的提交/更新能够减少在冲突发生的概率,以及发生时解决冲突的复杂度。

        2、在提交时,写上明白的message,方便以后查找用户更新的原因,毕竟随着时间的推移,对当初更新的原因有可能会遗忘。

        3、养成良好的使用习惯,使用SVN时每次都是先提交,后更新。每天早上打开后,首先要从版本号库获取最新版本号。每天下班前必须将已经编辑过的文档都提交到版本号库。



  • 相关阅读:
    Hello Springboot
    Spring AOP
    代理模式
    Spring 面向注解开发
    Spring Bean 的配置
    IDEA 14 for Mac 提示要安装java 6的修改
    NAS DIY
    Maven Jetty SSL配置
    图书管理系统(jsp+nysql实现)
    互联网+XX项目技术架构
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4507648.html
Copyright © 2020-2023  润新知