2014年6月27日金曜日

Subclipseでブランチの変更を本流にマージする

from http://entersystem.ddo.jp/trac/CommonDocs/wiki/TracTips_20100126_1

    SVNマージの仕方

SVNのマージはいろいろとコツのような物が存在します。
 また、SVNクライアントのバージョンなどにも依存する為説明を残しておきます。(最近のSVNクライアント1.2以降)

      説明

  1. SVNマージはまずブランチにて作業を行っている事を前提とする。ブランチの作業を完全にリポジトリと同期の取れた状態にする。
    つまり、「リポジトリと同期化」を行ってもなにも違いが表示されていない状態。
     
  2. マージを行うtrunkへ切り替える。
     
  3. trunkのプロジェクトにて、マージ処理を実行する。マージ処理を実行すると次のようなダイアログが表示される。
    この設定では、「改訂(E)」の項目のチェックを行い、改訂番号を設定しなければならない。(デフォルトは「コピーから開始(T)」となっているがこれではうまくマージ出来ない)
    改訂番号は「参照...」ボタンにより取得する。
     
  1. 改訂番号を取得するダイアログは以下のようになります。リストに表示されている項目はbranchにて改訂が行われた履歴となっています。
    この履歴からマージ対象となる履歴にチェックを入れます。(基本的には全てチェックを入れる事)
    チェックを入れた項目に対して、3.のマージダイアログに自動的に改訂番号が設定されます。
     
  1. マージ処理を行うと「チーム同期化」パースペクティブに切り替わり、違いのある項目が表示されます。
    ツリー表示内の競合している部分(赤矢印)に関しては手動でマージ操作を行う必要があります。
    赤矢印が付いたファイルをダブルクリックすると、比較エディターが表示されます。
     
  1. 比較エディターでは以下のような表示となりますが、ここでどのデータを編集すれば良いのかについて説明します。(編集は左側に表示されているファイルです)
    分かりやすいようにピンクと水色で領域を囲っていますが
    ピンクの領域(<<<<<.working ~ =======)はtrunkのデータ
    水色の領域(======== ~ >>>>>>>>.merge-right.r4419)はbranchのデータ
    となっており、通常はbranchのデータを正とする為trunkのデータは削除します。
     
  1. 今回の場合は編集後は以下のようになります。
     
  1. 編集を保存後、編集したファイルを「マージ済みとマーク」とします。
    マークされたものはリストから消えます。
    5.~8.を繰り返す事により全ての競合が無くなればマージ完了となります。
     
  2. 最後にマージしたソースでプログラムの動作確認を行い、trunkにコミットすれば完了です。