TortoiseSVNの使い方3(ブランチ操作) | Hello, Stupid World!

Hello, Stupid World!

いろいろとメモ代わりに書いていきます。

今回はブランチ関連の操作について解説。
受託のように一回リリースしたら終わりが多いような場合には
あまり使用しないかもしれませんが、製品開発などでは必須の
操作になります。

ブランチは例えば、バージョン1のリリースを控えてバグの修正を
行いつつ、バージョン2の開発を同時並行で進める場合等によく
使われます。
リリース用に作成したブランチをリリースブランチとかリリースライン
と呼びます。
メインとなる開発は常にトランクで行いましょう。


1.ブランチの作成

右クリック→「TortoiseSVN」→「ブランチ/タグの作成」→適当なメッセージを
入力してOKで、ブランチを作成します。
タグも同じ方法です。
作成時には

$Hello, Stupid World!-svn_brunch

ブランチの作成が終わると注意として、コミット対象は元のトランクのままであり
作成したブランチに対してコミットしたい場合には切替を行うようにメッセージが
表示されます。

ちなみに初期時はリポジトリ内のブランチ(branches)配下は何も無いので
利用する場合には適宜、リポジトリブラウザーからフォルダを作成して下さい。

ここから作成したブランチを使う訳ですが二通りの方法があります。

一つ目は注意でもでたように切替を行う方法。
二つ目はブランチ自体をチェックアウトして修正、コミットしていく方法。

切替は当分トランクを使わないような場合に行うと良いです。
一部分だけ切替るような運用は混乱の元なので、できるだけ避けましょう。

ブランチをチェックアウトする方法は平行で使用する場合に。
チェックアウトは既に説明しているので切り替えの方法を下記で説明します。


2.切り替え

手順は右クリック→「TortoiseSVN」→「切り替え」です。
すると以下のような画面が表示されます。

$Hello, Stupid World!-svn_切り替え

宛先パスを切り替え先に変更してOKを押します。
ここではコミット先がトランクだったものをブランチに変更しています。
一ファイルだけ切り替えなど行うと後で判断が難しくなります。


3.マージ

ブランチに行った修正をトランクにも行いたい場合、もしくはその逆を行いたい
場合があると思います。
そのような場合に使うのがマージです。

手順はマージしたい対象を選択して右クリック→「TortoiseSVN」→「マージ」

$Hello, Stupid World!-svn_マージ

上記ではブランチのtest.jsに対してトランクのリビジョン6の修正内容を
マージしようとしているところです。

マージ元:「~trunk/js/app/scheduler/test.js」を入力
マージするリビジョンの範囲:6
作業コピー:「branches/js/app/scheduler_blud/test.js」
となるように指定します。

マージはあくまでも作業コピーに行われるのでリポジトリに反映するには
マージ後にコミットして下さい。

マージの際に作業コピーで修正していても同一行を更新していなければ
マージしてくれます。
しかし、同一行の更新箇所が存在した場合は競合(コンフリクト)が
生じます。

$Hello, Stupid World!-svn_競合

ローカル(作業コピー)を優先するかリポジトリを優先するを選択した場合には
自動的にマージしてくれます。
「競合を編集」ボタンを押した場合にはマージツールが起動するので手動で
マージを行って下さい。

$Hello, Stupid World!-svn_マージツール