前段时间由于需要合并一下android版本,将分支版本合并到主干版本上,由于之前没有搞过类似的事情,结合资料自己摸索了一下,遇到了点小问题,不过最终还是顺利解决了,在此记录一下过程,方便下次查看。
这边我工作用的SVN版本控制,studio自带的版本合并工具在subversion的integrate Directory里,如左图所示,使用project形式,在项目顶层右键,开始合并版本。
文章图片
文章图片
弹出的对话框内,上面是主干版本地址,下面是分支版本地址,这里有一点需要注意,主干版本会默认选择head,也就是最新的,查询资料得知,如果都选的head,主干在拉分支后新加的内容会被删掉,最后主干会变成和分支一样,而不是我们一般理解的合并,我们理解的合并是保存主干分支各自的变动,最终都反映在主干版本中。查询资料得知,这种合并需要我们将主干的合并版本设为拉分支的最后一次更新版本,我这里通过看日志得到版本19648,当然大家的版本各不相同。设完后点OK合并版本。
【使用android studio 版本合并遇到的问题】一般来说这样就能成功合并了,但是我这里合并的时候突然报了一个错Merge tracking not allowed with missing subtrees;
try restoring these items,意思大概是主干版本上缺少文件,分支上面没有此文件所以冲突了。冲突的文件是一个.idea/libraries内的文件,可能是最后修改了依赖之类的导致,研究了很久没有解决问题,最后意外在version Control-Local Changes-Locally Delete Files里面看到了这个文件,见这个文件revert了一下,再来合并居然就成功了。
文章图片
版本合并了以后,一般来说都会出现很多冲突,这时候就需要手动一个个去解冲突,将主干和分支的内容都反映在最终版本中,冲突解完后,主干和分支内容已经都体现在本地代码中了,最后将本地代码commit一下,把新增和修改的内容上传至svn上,这样就完成了一次分支版本合并到主干上的过程。