連載:Team Foundation Server 2010入門

第3回 Team Foundation Server 2010で一歩先行くソース管理

WINGSプロジェクト りばてぃ(監修:山田 祥寛)
2010/08/24
Page1 Page2 Page3

チェックインの制約

チェックイン・ポリシーとは?

 分岐とマージは、どちらかといえば「生産性の向上に寄与する機能」であった。今度は、「品質の向上に寄与する機能」である「チェックインの制約(=チェックイン・ポリシー)」という機能を見てみることにしよう。

 開発者がTFSのソース管理サーバに対してチェックインを行おうとした場合、それは滞りなく行えるのが普通だ。たとえ、その時点のソース・コードにバグがあったり、ビルドも通らない状態であったりしたとしても、開発者がチェックインを行おうと思えばできてしまう。

 しかし、このような何の制約もない自由なチェックインが行える状況では、ソース管理サーバに登録されているソース・コードの品質はボロボロになってしまう可能性がある。ほかの開発者がソース管理サーバから最新のソース・コードを取得した途端にビルド・エラーが発生し、開発ができなくなってしまうなど、もってのほかだ。このような問題を回避し、ソース管理サーバ上のソース・ファイルに、ある一定以上の品質を確保するために、チェックインできる条件を設定するものが「チェックイン・ポリシー」である。

 このチェックイン・ポリシーは、チーム・プロジェクト単位で設定できる。前回、チーム・プロジェクトにソース・コードを登録する際にも、慎重に場所の選択をすることをお勧めした。チェックイン・ポリシーを利用する場合には、「異なるチェックイン・ポリシーを適用したいソース・ファイル群は、別のチーム・プロジェクトにする」といった考慮も必要となるので、この点も踏まえて、よく検討するようにしていただきたい。

チェックイン・ポリシーの種類

 では最初に、チェックイン・ポリシーにどのような種類があるかを確認してみよう。

 [チーム エクスプローラー]でチーム・プロジェクト項目を右クリックし、メニューから[チーム プロジェクトの設定]−[ソース管理]を選択する。これにより表示される[ソース管理の設定]ダイアログで、[チェックイン ポリシー]タブを開いて[追加]ボタンをクリックする。すると[チェックイン ポリシーの追加]ダイアログが起動され、そこでいくつかのチェックイン・ポリシー項目が表示される(図10)。

図10 [チェックイン ポリシーの追加]ダイアログに表示されるチェックイン・ポリシーの種類

 各種チェックイン・ポリシーの概要は、表1をご覧いただきたい。

ポリシー名 説明
コード分析 Visual Studio 2010 Premium以上に用意されている静的コード分析機能によるソース・コード・チェックを実施し、その結果がOKの場合にチェックイン可能
テスト・ポリシー Visual Studioのテスト機能(主に単体テスト)によるテストにパスしている場合にチェックイン可能
ビルド TFSのビルド機能によるビルドが成功している場合にチェックイン可能(TFSのビルド機能については連載の別の回で紹介予定)
作業項目 チェックインする内容が1つ以上の作業項目に関連付けられている場合にチェックイン可能(作業項目については次回以降で紹介予定)
表1 各種チェックイン・ポリシーの概要

チェックイン・ポリシーの設定と、チェックイン時のポリシー違反

 [チェックイン ポリシーの追加]ダイアログで、いずれかのチェックイン・ポリシーを選択して[OK]ボタンをクリックすると、そこで選択したチェックイン・ポリシーに基づくチェックが、チェックイン時に実施されるようになる。ポリシーに違反している場合には、原則としてその内容を修正しないと、チェックインすることができない。

 このようにすることで、チェックインするソース・コードに、ある一定以上の品質に達していることを要求でき、ソース管理サーバ上にあるソース・ファイルを高い品質で維持できるというわけだ。試しに、先ほどの[チェックイン ポリシーの追加]ダイアログで「コード分析ルール」を有効にした状態で、不正にチェックインしようとした際の警告内容を図11に示す。

図11 [チェックイン - ポリシーの警告]ダイアログによるポリシー違反の警告

 このように、チェックインを行う際に、[チェックイン - ポリシーの警告]ダイアログにポリシー違反の警告が表示される。この内容を基に、違反がない状態になるまでソース・ファイルを修正しなければ、チェックインは行えない。

【コラム】ソース管理のオプション

 今回では割愛したが、前述の[ソース管理の設定]ダイアログの[チェックアウトの設定]タブからソース管理の動作を変更することができる。[複数のチェックアウトを有効にする]チェックボックスのチェックを外すことで、VSSと同じように単一ユーザーのみがチェックアウトできるようにしたり、[チェックアウト時の最新バージョンの取得を有効にする]チェックボックスのチェックを入れることで、チェックアウトと同時に対象ファイルの最新バージョンを取得できるようにしたりすることが可能だ。

チェックインの棚上げ

シェルブとは?

 チェックイン・ポリシーは、ある一定以上の品質を確保する手段として、とても便利な機能だ。しかし、ポリシーを満たして警告が表示されない状態にならないとチェックインできないのでは、場合によっては、なかなかチェックインすることができないソース・ファイルが出てきてしまう可能性がある。それでは、そもそもソース管理機能を導入する目的を果たすことができず、本末転倒だ。

 この問題を解決するため、チェックインを行うわけではないが、ソース管理サーバにソース・ファイルの編集結果を一時登録しておくための機能として、「シェルブ」機能が用意されている。ちなみに「シェルブ」を和訳すると「棚上げする」などの意味となる。

 シェルブ機能では、チェックインに相当する「シェルブ」と、チェックアウトに相当する「アンシェルブ」というコマンドがある。

シェルブの実施手順

 まず、シェルブを実行するためには、チェックインなどと同様に[ソリューション エクスプローラー]で対象のソース・ファイル項目を右クリックして、メニューから[保留中の変更をシェルブ]を選択する。[チェックイン]ダイアログに似た[シェルブ]ダイアログが表示されるので、図12のように[シェルブセット名]に何かしら分かりやすい名前を入力し、[シェルブ]ボタンをクリックする。

図12 [シェルブ]ダイアログでのシェルブの実行

 なお、アンシェルブ時にはシェルブセット名から対象を探し出すことが多くなるため、シェルブを利用する場合には、分かりやすい命名規約をあらかじめ取り決めておき、それにのっとって命名することを推奨する。

 これで、ソース管理サーバへのシェルブの登録は完了だ。ただし、現在編集中のソース・ファイルがチェックインされるわけではないので、[ソリューション エクスプローラー]上でのアイコンはチェック・マーク付きのままだ。シェルブを利用する場合には、シェルブ後に同じくソース・ファイル項目を右クリックし、メニューから[保留中の変更を元に戻す]を選択して、いったん変更を元に戻しておこう(=つまり、チェックアウト後の変更を破棄して、元のチェックイン時の状態に戻す)。

アンシェルブの実施手順

 シェルブした内容を取得するには、Visual StudioのIDEのメニュー・バーから[ファイル]−[ソース管理]−[保留中の変更をアンシェルブ]を選択する。すると、図13のような[アンシェルブ]ダイアログが表示され、ソース管理サーバに登録されているシェルブの一覧が表示される。

図13 [アンシェルブ]ダイアログでのアンシェルブの実行

 ここで、シェルブセット名や日付、左下の[詳細]ボタンをクリックすると表示される内容などから取得対象のシェルブを決定して、[アンシェルブ]ボタンをクリックする。すると、シェルブ内容が取得され、対象となったソース・ファイルは自動的にチェックアウトが行われる。ただし、一度シェルブされた内容はアンシェルブを行ってもソース管理からは削除されない。不必要であれば削除してしまっても構わないが、シェルブも履歴として保管しておいてもよいだろう。

 このように開発途中のソース・ファイルを一時的に保管しておくのに、シェルブは実に都合がいい。チェックイン・ポリシーがあったとしても、それを満たせない間はシェルブしておくことで、ソース・ファイルを安全に管理しておくことが可能なので、ぜひ活用してみよう。

 また、シェルブした結果は、ほかのユーザーが取得することもできるため、チェックイン前にコード・レビューを依頼する場合にも、依頼対象一式をシェルブしておくことで、いちいちメールなどで対象のソース・ファイルを送付するといった作業をなくすことができる。

【コラム】シェルブセットとは

 TFSでは、同時にチェックインされたファイル群は「変更セット」という単位で管理されている、と説明した。同様に、シェルブを登録した際に同時にシェルブ対象になったファイル群は、「シェルブセット」という名前で管理されている。変更セットとシェルブセットは、扱い方やUI(ユーザー・インターフェイス)上の操作にほとんど差がないため、変更セットの取り扱い方を覚えていれば、シェルブセットもほぼ同様に扱うことができる。唯一異なる点は、チェックイン時にはポリシー警告が表示されるのに対して、シェルブ時にはそれが存在しないという程度だ。

まとめ

 2回にわたって、ソース管理機能の基本的なところから、少し応用的な部分まで見てきたが、いかがだっただろうか。

 基本的な使い方にVSSと大差なくとも、TFSには生産性や品質を高めるアドバンテージのある機能が用意されていることは理解いただけたと思う。通常のソース管理に加え、これらの機能を駆使して、自身の開発に役立てていただきたい。

 次回はソース管理機能と密接に連携して動作するビルド機能を体験しよう。End of Article


 INDEX
  [連載]Team Fourndaiton Server 2010入門
  第3回 Team Foundation Server 2010で一歩先行くソース管理
    1.分岐とマージとは?/TFS 2010における分岐の実施手順
    2.TFS 2010におけるマージの実施手順
  3.チェックインの制約/チェックインの棚上げ

インデックス・ページヘ  「連載:Team Foundation Server 2010入門」


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 記事ランキング

本日 月間