前言:工具
做为团队开发,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)很为难,只能告诉你冲突咯,以前的修改算是白费了。固然喜妹修改前获取到的就是最新版本,只惋惜手脚慢,被人先上了位,改了朝换了代,这个时候喜妹再拿着前朝的圣旨来上位,你们是不认可的,不过你们都是有素质的人,可不能直接霸蛮提交,这样哉哥上位的历史就被掩埋了。喜妹若是还想上位,就得先和现任店长商量好,若是哉哥赞成了,喜妹就能够上位了。
情景四:故事好复杂...
示意图(图片看不清请先下载):
听了这么多故事,最后这个故事就留给各位看官本身去讲吧。
第一次写博文总结
文章有点乱,情节也很跳跃,道在于行,亲行以后,方才能得道,请轻点拍砖。下次要写得思路清晰些,欲知靠谱哥、哉哥、喜妹的后续故事,下回再解。