SVN的使用,合并、冲突详解

前言:工具

  做为团队开发,SVN这样的版本控制工具势必是不可少的,前些日子,由于同事对SVN的使用不规范,致使了不少没必要要的麻烦,而后我在QQ空间里吐槽了下,还引起了好多人的争论,不乏技术大牛也说出了本身的观点“规则优于配置”,不过做为使用者,弄清楚各类情景的原理仍是颇有必要的,这样利于本身利于他人。spa

 

情景一:单人操做文件设计

  示意图:
3d

              

  第一个故事是这样的:版本控制

   靠谱哥想开个店子,迎娶白富美,走上人生巅峰!因而他动手了(比你强哦,好歹他行动了,哈哈)blog

   1.首先靠谱哥,他准备些资料,如上图在SVN上作了配置,文件基础版本为:V01.properties.图片

       2.靠谱哥后来想修改下配置文件,想增长一些内容因此他作了以下操做资源

      Step1:从SVN上取到基础版本V01.properties到本地;开发

      Step2:在本地基于V01.properties修改资料,修改完保存到本地,本地命名为:K02.V01.properties。(SVN则认为这将是V01.properties升级版,在本地叫K02.V01.properties,其中K=kaopu(靠谱),02=01的下个版本V01=基于V01版本修改而来)it

      Step3:靠谱哥先update一下,未发现SVN上比本地的基础版本V01.properties更新的版本,因此SVN不用处理合并;

      Step4:commit资料,SVN在库上造成新的正式版本:V02.properties.

  3.靠谱成功完成了一次资料修改

    第一个故事描述了一次完整的SVN从  下载基础版本-->本地基于基础版本修改文件-->提交前检查SVN库上是否有新版本-->提交修改的文件,并在SVN库生成正式新版本。

情景二:两人操做同一文件

  示意图:

      

 

  第二个故事是这样的:

  靠谱哥想开个店子,迎娶白富美,走上人生巅峰!他一我的干以为没意思,因此叫来了呆逼朋友哉哥来一块儿合做(靠谱还真是呆逼,本身要亏就算了,还拖基友下水,不靠谱)

      Step0:时空倒转,反正就是回到了SVN库上只有一个版本的时候,如上图:靠谱准备好了一些资料(怎么这么奇怪的资料,嘻嘻不告诉大家);

  靠谱想:“恩,这一次要设计个牛B点的URL,URL就是统一资源定位,很重要的,不能和上次同样,嗯?我为何要说上一次,不是时空倒转了么,嗯,无论了(多傻逼的靠谱)”

  话很少少,靠谱哥操做(历史老是惊人的相,丫的操做竟然又来一次):

      Step1:从SVN上取到基础版本V01.properties到本地;

      Step2:在本地基于V01.properties修改资料,修改完保存到本地,命名为:K02.V01.properties。

      Step3:靠谱哥先update一下,未发现SVN上比本地的基础版本V01.properties更新的版本,因此SVN不用处理合并;

      Step4:commit资料,SVN在库上造成新的正式版本V02.properties.

      哉哥也是个呆逼,上班一天回来累死累活,看片的时间都不够,竟然最后仍是答应了靠谱哥一块儿弄什么破店子。

      哉哥哉时空倒转后的第一时间就检查了SVN库(这特么就是职业病),好歹这也是目前惟一的资产了,结果看到基础版本里的店子竟然是靠谱哥,哉哥大怒,因而一鼓作气

  以下操做:

      Step1:从SVN上取到基础版本V01.properties到本地;

       Step2:在本地基于V01.properties修改资料,修改完保存到本地,命名为:Z02.V01.properties;

       Step3:哉哥先update一下,竟然发现SVN上存了在比本地的基础版本V01.properties更新的版本V02.properties,因此SVN须要作点什么;

SVN的思考:哉哥基于V01.properties修改是不合理的,哉哥应该基于V02.properties来修改,可是他都已经修改完了,看来只有我来帮他合并了

第一行:没有问题,你们都没改;

第二行:靠谱哥没改,那就按哉哥的来改吧;

第三行:哉哥都不知道有第三行的存在,那我就给他加上吧;

改完了,保存在哉哥本地为Z03.V02.properties

 

      Step4:commit资料,SVN把哉哥本地的Z03.V02.properties提交到SVN库上造成新的正式版本V03.properties(),修改为功;

第二个故事讲完了,靠谱哥和哉哥两我的很默契的完成了一次对同一个文件的修改;

情景三:两人同时操做一个文件冲突

  示意图(图片看不清请先下载):

      

第三个故事是这样的:

  靠谱哥想开个店子,迎娶白富美,走上人生巅峰!他以为两我的干钱不够,因而又把喜妹拖下了水。

    Step0:时空倒转,反正就是再次回到了SVN库上只有一个版本的时候,如上图:靠谱准备好了一些资料;

  哉哥仍是想当店长,结果喜妹竟然也有一样的想法

  哉哥操做以下:

    Step1:从SVN上取到基础版本V01.properties到本地;

     Step2:在本地基于V01.properties修改资料,修改完保存到本地,命名为:Z02.V01.properties。

     Step3:哉哥先update一下,SVN上的最佳版本依然V01.propertie,因此SVN不须要作点什么;

     Step4:commit资料,SVN把哉哥本地的Z02.V01.properties提交到SVN库上造成新的正式版本V02.properties(),修改为功

  喜妹操做以下:

    Step1:从SVN上取到基础版本V01.properties到本地;

    Step2:在本地基于V01.properties修改资料,修改完保存到本地,命名为:X02.V01.properties;

    Step3:喜妹先update一下,发现SVN的最佳版本再也不是V01.properties而是V02.properties,因此SVN须要作点什么

SVN又开始思考:喜妹基于V01.properties修改是不合理的,喜妹应该基于V02.properties来修改,可是他都已经修改完了,看来只有我来帮他合并了

第一行:没有问题,你们都没改;

第二行:哉哥竟然改了(店长从 靠谱哥 --> 哉哥),喜妹也改了(店长从 靠谱哥--> 喜妹);

完了完了,到底怎么改,前任店长到底要把店铺钥匙交给谁????好把,看大家干的好事儿,作为SVN我也无论了。

 

    Step4:SVN给出了冲突的提示

 

  第三个故事讲完了,故事里哉哥得知上一任店长是靠谱哥,并要求作下一任店长,同事喜妹也取到了基础版本,得知了上一任店长是靠谱哥,一样要求作下一任店长。结果两我的打起来了吧。SVN表示很为难,其实上一任店长靠谱哥也很为难;

  总结第三个故事:其实哉哥和喜妹同事获取到了上一任店长的信息,惋惜哉哥有过第二个故事的经验(不是说好了时空倒转的么,毛的经验可谈啊...)及时修改了资料并及时提交,正常上位!喜妹还在基础版本上作修改,殊不知道哉哥早就上位了,致使让太监(SVN)很为难,只能告诉你冲突咯,以前的修改算是白费了。固然喜妹修改前获取到的就是最新版本,只惋惜手脚慢,被人先上了位,改了朝换了代,这个时候喜妹再拿着前朝的圣旨来上位,你们是不认可的,不过你们都是有素质的人,可不能直接霸蛮提交,这样哉哥上位的历史就被掩埋了。喜妹若是还想上位,就得先和现任店长商量好,若是哉哥赞成了,喜妹就能够上位了。

 

情景四:故事好复杂...

  示意图(图片看不清请先下载)

    

 

听了这么多故事,最后这个故事就留给各位看官本身去讲吧。

 

第一次写博文总结

  文章有点乱,情节也很跳跃,道在于行,亲行以后,方才能得道,请轻点拍砖。下次要写得思路清晰些,欲知靠谱哥、哉哥、喜妹的后续故事,下回再解。

相关文章
相关标签/搜索