Visual Studio .NETによるチーム開発事始め

Visual SourceSafeを使いこなす

デジタルアドバンテージ
2004/02/21
Page1 Page2 Page3 Page4

多重チェックアウト・モードでチェックイン

 チェックアウトしたファイルは編集して最終的にはチェックインするのだが、その編集作業中にほかの開発者が先にチェックインを行い、VSSデータベース上のソース・ファイルが書き換わってしまっていると仮定しよう。

 すると、いまチェックインしようとしているファイルは、ほかの開発者によって変更される前のソース・ファイルを元に編集したので、「いま編集中のコード」と「VSSデータベースのコード」では不整合(コンフリクト)が発生する。このコンフリクトとは、具体的には「いま編集中のコード」にほかの開発者が追加したコードが含まれていないことを指している。

 よって、「編集中のソース・ファイル」をそのままチェックインして「VSSデータベース上のソース・ファイル」を上書きすると、ほかの開発者がソース・ファイルに加えたコードを消失してしまう可能性がある。それを避けるために、この2つのソース・ファイルを比較して、マージ(統合)するという作業が必要になるのだ。

 このマージ作業を行うにはまず、マージしたいソース・ファイルを[ソリューション エクスプローラ]上で右クリックしてコンテキスト・メニューを表示し、そのメニューの中から[最新バージョンの取得]を選択する(なお、VS.NETにおける「最新バージョン」というのは、本稿での「最新のリビジョン」と同じ意味になる。VS.NETで「最新バージョン」という用語が用いられている理由は、恐らく「最新バージョン」という言葉が「最新のもの」を意味する最も一般的な用語だからだと思われる。しかし、バージョンとリビジョンは明確に区別されるべきものなので、本稿では用語を使い分けている。なおその違いについては、本連載で解説済みなので、そちらを参照されたい。以後、何度も「最新バージョン」と出てくるが、混同しないように注意していただきたい)。

ソース・ファイルの最新バージョンの取得
編集したファイルをチェックインしても不整合(コンフリクト)が起きないようにするため、事前に最新のリビジョンのソース・ファイルを取得してマージ作業を行う。
  [ソリューション エクスプローラ]上でチェックインしたいファイルを右クリックしてコンテキスト・メニューを表示する。
  メニューから[最新バージョンの取得]を選択する。

 ソース・ファイルがチェックアウトされた状態でこれを実行すると、次の確認メッセージが表示される。

最新ファイルの取得時の確認メッセージ
ソース・ファイルがチェックアウトされた状態で[最新ファイルの取得]を実行するとこのメッセージが表示される。
  [すべての項目に適用]にチェックを入れると、以後すべてのファイルで同じ動作(「置換」「マージ」「変更しない」など)を行う。
  VSSデータベース上の最新のファイルを取得して、そのファイルでローカルにある編集中のファイルを上書きする。
  VSSデータベース上の最新のファイルを取得して、そのファイルとローカルにある編集中のファイルをマージする。
  VSSデータベース上の最新のファイルを取得しない。つまり、ローカルにある編集中のファイルは上書きもマージもしない。
  最新ファイルの取得をキャンセルする。
  ヘルプを表示する。

 この確認メッセージでは、基本的に[マージ]を実行して、「編集中のソース・ファイル」と「VSSデータベース上の最新のファイル」をマージ(統合)する。なお、ここで[置換]を選ぶと、VSSデータベースにある最新のファイルで編集中のファイルを上書きしてしまうことになる。また、[変更しない]を選択すると、VSSデータベースの最新のファイルを取得できない。

 [マージ]を実行すると、次の[データベース内のバージョン を ローカル バージョン にマージ]ダイアログが表示される。

[データベース内のバージョン を ローカル バージョン にマージ]ダイアログ
このダイアログで、VSSデータベース内のファイルと編集中のファイルとを確認しながらマージできる。「VSSデータベース内のソース・ファイル」(左上)と「ローカルにあるソース・ファイル」(右上)、「マージ後のソース・ファイル」(下)という3ペイン表示になっている。
  コンフリクト(不整合)の発生している部分が色付きで表示される。
  最終的に残したい方のコードをクリックする。
  すると、最終的なマージした後のコードの表示に反映される。なお、ここでコードを直接編集することもできる。
  編集が終了したら、ツールバーの[保存]ボタンをクリックして、変更内容を保存する。

 このダイアログでソース・ファイルのマージ(統合)作業を行う。「VSSデータベース内のソース・ファイル」と「ローカルにあるソース・ファイル」をクリックで選択して、最終的に残すコードを決定できる。もちろんマージするコードを編集して自由にコードを書き直すことも可能だ。

 マージ・ファイルが確定したら保存してダイアログを閉じる。すると次に、以下の確認メッセージが表示される。

マージ作業完了を確認するメッセージ
コンフリクトを適切に解決してマージできたかどうかを確認する。
  マージを確定して最新バージョンの取得を終了する。
  もう一度マージ作業を行うか、または最新ファイルの取得をキャンセルするかを、次に表示される確認メッセージで選択して実行できる。
  ヘルプを表示する。

 ここで[はい]を選択すれば、マージが完了して、[最新バージョンの取得]の処理は終了する。マージしたソース・ファイルはまだ一度もビルドもテストもされていないコードなので、必ずここでビルドや単体テストを行い、正常に動作することを確認した上でチェックインを行うようにするべきだ。

 多重チェックアウトでチェックインを行う手順は、基本チェックアウトの場合のチェックインと同じだ。よって詳しくは前回の記事を参考にしてほしい。

 このチェックインの時点で、再度「VSSデータベースのソース・ファイル」に変更があって、コンフリクト(不整合)が発生した場合には、最新バージョンの取得の処理でも表示された[データベース内のバージョン を ローカル バージョン にマージ]ダイアログが表示される。この場合は、取りあえずチェックインをキャンセルしていただきたい。

 なぜなら、そのままマージしてチェックインしてしまうと、ビルドや単体テストを一度も行っていないソース・ファイルをVSSデータベースに格納してしまうことになるからだ。これは問題である。例えば、ビルドできないソース・ファイルを、チームで共有するVSSデータベースに格納してしまうと、そのファイルを取得したチーム・メンバー全員がビルドできない事態に陥ってしまい、チーム全体の開発がストップしてしまうだろう。

 チェックインのキャンセルを行った場合には、もう一度[最新ファイルの取得]を実行してマージ作業を行う。その後でもう一度チェックインを行うとよい。

 以上のように、多重チェックアウトはファイルをマージ(統合)する必要があるため、マージしたコードがコンフリクトを起こさないか、正しく動作するか、ビルドできるかを必ずチェックする必要がある。このため、多重チェックアウト機能を利用する場合には、開発チーム内で編集するソースについてよく話し合い、入念に修正内容を確認した上で、ソース・ファイルをマージしなければならない。よって筆者としては、多重チェックアウトよりも基本チェックアウトをお勧めする 。


 INDEX
  Visual Studio .NETによるチーム開発事始め
  Visual SourceSafeを使いこなす
    1.多重チェックアウト・モードでのチェックアウト
  2.多重チェックアウト・モードでのチェックイン
    3.ソース管理への追加と削除
    4.バージョン・ラベルの設定と取得
 
インデックス・ページヘ  「Visual Studio .NETによるチーム開発事始め」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間