当前位置: 代码迷 >> CVS/SVN >> SVN版本归拢(merge)原理与操作指南
  详细解决方案

SVN版本归拢(merge)原理与操作指南

热度:9685   发布时间:2013-02-26 00:00:00.0
SVN版本合并(merge)原理与操作指南

?

  1. SVN的合并操作其实是一系列操作的组合:
    • 主干或某个分支上的一组修订(即合并的源头)应用到另一个分支或主干(即合并的目标)的working copy(本地工作拷贝);简单说,合并包括三要素——源头、目标、目标的working copy;
    • 如果出现冲突(conflict),需手工解决冲突;
    • 最后提交,提交时还要在SVN备注中标明这是一次合并,如merge -r 5645:5650 svn://10.191.17.67/p17_ii/development/sourcecode/Branchs/P17-II/2011-03-17 发布前又有小改动
  2. 为何会出现冲突,如何解决:
    • 源不仅是个url,还包括一个修订范围,例如前面红字示例中的-r 5645:5660;
    • 假设源头包含5646、5648、5650三个修订版,working copy的当前修订版是5649;
    • 那么合并时SVN实际进行的操作是:diff 5646 5648,然后apply到working copy;diff 5648 5650,然后apply到working copy;
    • 这个过程中,svn也会分别diff 5646 5649,diff 5648 5649,如果这两个diff任何一个与上文的两个diff中的任何一个恰好改了同一行代码,则出现冲突,相应的文件中会用标记分别标明这两种diff差异,同时会生产3个临时文件,分别是.working、.left_r5646、.right_r5650;
    • 一般选择手工解决冲突,但如果很对,也可以直接保留.right_r5650作为最终结果,
  3. 更多内容,详见svnbook。

?

  相关解决方案