[iOS]Cornerstone 中的 Merge 操作

        最近刚入职,接触到公司项目,用的是SVN,使用cornerstone进行管理。由于之前只接触过git,并且使用的命令行,所以对cornerstone并不熟悉(有点可悲的是iOS组没有其他前辈可以请教。。。)。在搜索引擎和项目老大的帮助下,自己也慢慢摸索出了cornerstone的一些使用门道,本文就记录一下自己学习的一些过程,当做是自己的一个学习笔记吧,如果有读者有啥疑问的话能解答的话我也会跟大家解释的,相互交流学习吧。

        我就不从cornerstone配置项目文件说起啦,那些东西应该还是比较简单的,只要跟项目负责人拿到相关的服务器地址,用户账户密码,可以搜索到一堆的教程。在这里,我主要说下之前我没接触过的项目主干分支的代码合并吧,也就是merge操作。

          首先说下merge中的步骤:1 主动合并的工程必须要先commit到服务器中; 2 A是主干,B是主干的分支。例如从B中merge到A的操作:选择cherry pick change(任意选择,synchronize change为同步到所有分支),在revisions中可以选择all,merged和unmerged。其中,一般我们选择unmerged,也就是没有merged过的,因为并不是每一次commit的修改都需要merge到其他分支去。比如这次我们选择这条修改进行merge,点击Merge Changes.被merge的项目在本地检查项目中merge进来的代码没有造成冲突或者报错什么的之后就commit一下,将代码提交到服务器中。            

[iOS]Cornerstone 中的 Merge 操作_第1张图片
选择某一次的修改进行merge

        注意点(坑):有些修改跟其他修改可能存在一些依赖关系,例如第19次修改是在第18次修改的基础上进行的,并且第18次的修改没有进行merge,那么merge的时候,如果只revisions了第19次,就可能会造成问题。一般来说,独立的功能修改进行merge的话不会造成问题,因为并没有和其他修改存在依赖关系。另外,commit前要大致浏览一下修改的内容,还有如果是显示有冲突文件的话,最好是手动进行修改,因为直接点击 reslove 的话修复的很可能是有问题的。

       最后,为了方便理解,说下我理解的merge的实现过程吧:服务器中A主干与B分支在本地上都有一个映射,就是working copies中相对应的项目。在A中做了某些修改之后,commit到远程仓库,这样远程仓库就有了A的最新代码;A的修改merge到B时,其实就是A的远程仓库将相关的修改update到B的本地映射,也就是B的working copies中。在检查完merge后的代码没有造成冲突后,B就将本地的最新代码commit到远程仓库中。这样的流程下来之后,A和B的本地与远程仓库的代码都是最新的了。这就是为什么merge前要主动merge的项目必须要commit最新代码到远程仓库中的原因,也正因为如此,被merge的项目merge后要检查时候有代码冲突等问题后才commit到远程仓库中。

        第一次写博客,知道写的不好,所以有错误的地方还得请大家多多指教呀,先行谢过啦。大家一起加油吧!

你可能感兴趣的:([iOS]Cornerstone 中的 Merge 操作)