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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章