简化Customized Cocos2dx的升级流程

Cocos2dx作为一个开源引擎,有一个重大的优势就是可以根据自己的需要进行自定义修改。我们初始使用的是2.0.4版,并且已经在此基础上根据自己的需要进行了很多处修改。2.1.4版推出后,据说在读取速度上有明显改进,为了这个特性,我们决定升级。

 

传统的升级方法就是准备一份2.1.4,然后用beyond compare找出所有2.0.4里被修改的地方,逐一复制过来,这可是个体力活,而且每次升级的工作量都很大。后来听同事说可以用perforce将问题简化,遂研究之。

 

准备一个original文件夹,存放没被修改过的原始版本。从original文件夹branch出来一个customized文件夹,从这里做自定义的修改。后来引擎升级,就在original文件夹上进行,升级完之后merge到customized文件夹,就能进行大部分的自动合并了。

 

  1. 准备一个original文件夹,存放2.0.4,这个很简单,可问题是我们的customized文件夹早已存在并做了很多修改,这时候怎么branch过来到这个已存在的文件夹呢?方法很简单,在original上按右键,选择merge/integrate,target选择好到customized上,然后最关键的一点,是在advanced选项上,勾上-i选项:enable baseless merge,然后建立连接,这里因为要保留我们已做的修改,所以冲突的时候选择accept target。操作结束后两个文件夹就关联起来了。
  2. 下一步是在original文件夹上从2.0.4升级到2.1.4,先将整个文件夹checkout,然后将2.1.4覆盖上去,然后mark for add把新增文件标记好,最后revert unchaged取消没改的文件,提交之。
  3. 升级好了之后从original再merge到customized,这里有的文件还是要标上-i,没注意为什么。然后就会有几千个文件需要resolve,这时候先将只有升级修改了的文件以及只有我们修改了的文件放心的auto resolve掉,最后剩下的就是升级过程修改了,并且我们也修改了的文件,如果放心的话可以将没有冲突的也auto resolve,不放心的话全部自己过一遍也可以,这里是升级过程的主要工作量。当然有些文件比如项目文件之类的,就需要额外处理一番。
  4. 升级完成后还有个遗留问题,就是在2的时候,其实那些2.0.4里面有,但是在2.1.4里移除了的文件还没有mark for delete,本来以为要写个脚本处理,后来同事提醒可以用beyond compare,直接比对出应该删除的文件,然后copy filenames,就可以把这些文件摘出来,直接用p4命令删除即可。但是中间有部分文件没有删除成功:有空格的文件和有@的文件,前者直接文件名加双引号即可处理,后者是因为@是p4命令里的通配符,需要转义成%40,结果转义后还是不行,才想起%又是bat命令里的转义符,需要用%%代替。全过程在excel的帮助下,很快就能搞定,最后再次merge到customized即可。

 

升级结束后发现官方论坛又发布了2.1.5版,修改了40多个文件,按照这个流程(不用再做1),很快升级完成。不过后面cocos2d-x 3的修改貌似过大,估计用不上这套方法了,但还是觉得很巧妙,记之。

posted @ 2013-09-04 10:35  unionfind  阅读(333)  评论(0编辑  收藏  举报