2004年05月11日

VisualSourceSafeの分岐とマージ

環境
VisualSourceSafe 6.0d

最近、VisualSourceSafe(以下VSS)の分岐機能とマージ機能を使ってみました。 これらの機能を使った感想や、うまく使うコツを書いてみたいと思います。

分岐とマージは、ソースコード管理の世界では一般的な単語だと思いますので 説明は省略します。

過去のバージョンからの分岐。
VSSエクスプローラーから分岐させたいプロジェクトを選択し、メニューから以下の通りに操作します。
プロジェクトの履歴→分岐するバージョンのラベルを選択→共有→共有後に分岐をチェック →適当なプロジェクトを選択(分岐するプロジェクトの親プロジェクトが良い)→新しい名前を適当に選択(プロジェクト名+分岐時点のラベル名が良い)
「共有後に分岐」のチェックを忘れた場合は、後で分岐しておきましょう。

分岐できたら、分岐したファイルを編集してバグ修正や新機能の追加を行います。 編集が完了したらチェックインしておきましょう。

ビジュアルマージのOFF。
マージを行う前に、コンフリクトの発生に備えます。
VSSは、GUIでコンフリクトの解消が行えるビジュアルマージというツールを用意してくれています。
しかし、コンフリクトの解消というのは開発者が一行一行チェックして行わないとうまく行かない微妙な作業であるのに対し、ビジュアルマージは、分岐元のコードを取り込むか、分岐先のコードを取り込むか、両方のコードを取り込むか、などといった大雑把な選択しかできません。
そのためちょっと使い物にならないので、ビジュアルマージを使用せず手動でコンフリクトの解消を行うことをお勧めします。ビジュアルマージはメニューから以下の操作を行うことによりOFFにできます。
ツール→オプション→全般→ビジュアルマージの使用→いいえ

分岐先のソースの分岐元へのマージ。
次に分岐元を編集して分岐先に加えた変更を取り込みます。

最初に、分岐元のソースを全部チェックインしておきましょう。 マージ直前ということでラベルを設定しても良いです。

次に、分岐先でどのファイルを編集したのか確認しましょう。 編集したファイル名を全て覚えていれば良いのですが、全部は覚えていない場合、 分岐先のプロジェクトの履歴を見て、レポートをファイルかクリップボードに出力しておくと良いでしょう。

次に、先ほどのレポートに記述されているファイル一つ一つに対し、 VSS上で分岐元のファイルを選択し(分岐先のファイルではありません。分岐元です)、以下の操作を行いマージします。
ソースコード管理→分岐ファイルのマージ →分岐先プロジェクト選択→マージ
分岐ファイルのマージはファイル一個ずつ行なうしかないようです。 ファイルがたくさんある場合はどのファイルをマージするべきか分かり難く大変ですが、 先ほど出力したレポートを見つつ一つずつマージしていきましょう。

マージした際、「コンフリクトのない状態でマージされました。ここでチェックインしますか ?」というメッセージが表示されてそのままチェックインできることがありますが、 ここではチェックインせず、「いいえ」と答えてチェックアウト状態のままにしておきましょう。
これは、VSSが自動的に結合を行った結果、特に問題なく結合できたということを意味していますが、VSSはプログラミング言語を解釈した上で結合したわけではないので、 VSSでは問題がなくても実際にコンパイルすると問題は山ほど出てきます。 そんな問題があるコードをチェックインしてはいけません。

さて、レポートに書いてあるファイルを全てマージしたとします。 その時点では、マージしたファイルは全てチェックアウト状態になっているはずです。 とりあえずビルドしてみましょう。 コンパイルエラーがわんさか出てくるはずですので泣きながら地道に潰していきましょう。

場合によっては、ソースコード中に次のような文字列が挿入されていることがあります。

<<<<<<<
=======
>>>>>>>

これはコンフリクトマーカーと呼ばれるもので、 コンフリクトが発生してVSSがうまく結合できなかったことを示しています。 このマーカーがある周辺は、特に注意しながら修正してきましょう。

なお、マージ直前のコードは拡張子orgとなって残されているので オリジナルコードを見たいときには参照しましょう。

コンパイルエラーが全てなくなったら、テストの1つでも行なった後チェックインしましょう。 このとき拡張子orgのファイルは削除されます。これでマージ作業は完了です。おめでとうございます。

投稿者 MASATO : 2004年05月11日 23:20 | トラックバック
コメント
コメントする









名前、アドレスを登録しますか?