Team Foundation Server 2010 を使ってソース管理

 前の前の記事で紹介しましたように、Team Foundation Server 2010 (以下TFS2010) の導入は非常に簡単です。
 そして、TFS2010の機能の中で最も手軽ながら最も有益な使い道は、ソースコード管理ではないかと思います。
 
 自分で作成したプログラムのソースコードの変更履歴などを簡単にたどることができ、例えばプログラムをいろいろ変更しているうちにおかしくなってしまった、というような場合でも、「上手く動いていた時の状態に逆戻り」することが簡単にできます。
 また、別の開発用マシンで作業の再開をする場合などにも便利ですし、違うバージョンのアプリケーションを開発するためにソースコードの分岐をしたりといったことも可能です。
 
 なお、我々は以前 Visual Source Safe という製品を、ソースコード管理専門のツールとして提供させていただいていました。
 しかしながら、既に Visual Source Safe は次期バージョンの開発を行っておらず、もしも Visual Source Safe のようなソースコード管理機能をお使いになりたいのであれば、ぜひ TFS 2008 をお使いください、そうすればこれまで以上に有益なソースコード管理を行うことができます、というようなメッセージを出させていただいていました。
 しかし TFS 2008 は、導入そのものの敷居が高かったため、Visual Source Safe から TFS へとステップアップするのは困難であるというフィードバックを多数いただいておりました。
 そして今回の TFS 2010 は、その導入の容易さから、現実的な意味での Visual Source Safe の次期バージョン、と考えていただくこともできるかと思います。
 
 それでは、実際にソースコードをチェックインしたり、変更履歴を活用したりしてみましょう。
 
 なお、ここでは既に TFS2010はインストールされており、何でも構いませんがプロジェクトが一つ作成されていることを前提にします。
 もしもまだ TFS2010 そのものの準備等ができていない場合には、前の前の記事をご覧ください。本当に簡単に導入できますのでご安心ください。
 
 まず、チームエクスプローラー上で、自分の作成したプロジェクトのノードの中に「ソース管理」という項目があることを確認してください。
 これをダブルリックすると、現在チェックインされているソースコードの一覧が表示されます。
 まだ何もチェックインされていない状態であれば、プロジェクト名のノード等しか表示されないと思います。
 

 
 今後、プログラムなどを書いてチェックインすると、このノードの下にそれらが追加されていく形になります。
 それでは早速、何かプログラムを作成してみましょう。
 何でも構いませんが、ここでは C# の コンソールアプリケーションを作ってみました。
 ここでは適当に Console.WriteLine(); などを使って、画面上に "Phase1" と表示するようにしています。
 

 
 
 そしてこのプロジェクトを構成するファイル群を、TFSにチェックインします。
 メニューの ファイル | ソース管理 | ソリューションをソース管理に追加... を選択してください。
 

 
 
 すると、以下のようなダイアログが表れて、複数のプロジェクトノードがある場合にはどのノードの下にチェックインするか、また追加するフォルダー名は何にするかなどを選択することができます。
 基本的にはそのままで OK をクリックします。
 
 
 
 
 
 すると、現在作成中のプロジェクトを構成するファイルが、チェックインの保留状態になり、「保留中の変更」ウインドウが表示されると思います。(表示されない場合は、メニューの 表示 | その他のウインドウ | 保留中の変更 を選択してください)
 

 
 
 とりあえず、これらのファイルをチェックインしましょう。
 「保留中の変更」ウインドウ上の コメント(M): の欄に何かコメントを書いて(例:まだスケルトン部分しか書いてありません 等) 、チェックイン(I) をクリックします。
 すると、確認のメッセージが表示された後、ファイル群がチェックインされます。
 
 チェックイン後は、ソース管理の画面上に自分のプロジェクト名のフォルダーが追加されて、その中にプロジェクトを構成するファイルが入っているのが確認できると思います。
 
 これで、以降全く違うPCを使用している場合であっても、VS2010さえインストールされていれば、このTFSサーバーに接続してこのプロジェクトをチェックアウトすれば、問題なく作業を再開することができますし、複数人で一つのプログラムを編集している場合でも、いわゆる上書きによって自分の直前の変更が消えてしまうということを未然に防ぐことができます。
 
 なお、もしも同じファイルを違うマシンで二人の開発者が別々に変更してしまい、あとからチェックインする人が前の人の変更を上書きして消してしまうような状況では、以下のようなメッセージが表示されて、一旦チェックインを拒否されます。
 

 
 そこで OK をクリックすると、以下のように競合の解決をするための方法を選択する画面になります。
 

 
 
 大抵の場合は、「自動マージ(M) 」を選択すれば、自動的に二人の変更をまとめて一つのファイルにしてくれます。
 もしも自動的にまとめられない(マージできない)場合には、「マージ ツールで変更をマージする(T) 」を選択して、目で見て競合を解決することができます。
 このような状況になるのは、ソースファイルの全く同一の場所を、同時に二人以上の開発者が変更した場合などに起こります。
 
  次に、先ほどチェックインしたソースファイルに変更を加えたとしても、必要であればいつでも前の状態にさかのぼることができるところを見てみましょう。
 
 先ほどのプログラムの "Phase 1" と表示させる部分を適当に変更してみます。
 すると、「保留中の変更」ウインドウ上において 今変更を加えた Program.cs ファイルが編集されたことがすぐに認識され、次のチェックインの保留状態になります。
 

 
 とりあえずこの状態でチェックインします。適当なコメントをつけて、チェックイン(I) をクリックします。
 

 
 これで、この Program.cs ファイルは、見かけ上は前の状態が破棄され、更新された現在の状態が上書きされたような形になります。
 しかし、実際には前の状態にいつでも復元できるように、データベース中に情報が保存されています。
 そして、その前の状態と今の状態を比較したり、前の状態に復元したりするのはとても簡単です。
 それでは前の状態と今の状態を比較する方法を紹介します。
 
 まずソース管理エクスプローラーを開きます。
 

 
 そして、前の状態と比較したいファイル(ここでは Program.cs)を右クリックして、「履歴の表示(H) 」を選択します。
 
 

 
 
 すると、これまでの変更履歴が以下のように表示されます。
 なお、今回は単純な実験なので履歴も2行しかなく、それほど恩恵を感じられないかも知れませんが、実際のアプリケーション開発において何十回となく変更を加えてチェックインを繰り返してきた場合、この変更履歴は大変重宝すると思います。
 
 

 右クリックして 比較... を選択すると、以下のようなダイアログが表示されるので、比較元(ソース)と比較対象(ターゲット)を指定してOKをクリックします。
 

 
 
 すると、以下のように相違のある部分が違う色で表示されるので、簡単に比較することができると思います。
  

 
 
 また、ソースファイルを以前の状態に戻したい場合は、その対象ファイルをソース管理エクスプローラー上で右クリックして、「特定バージョンの取得(G)... 」を選択すると、簡単に以前のバージョンのファイルが取得できます。


 
  
 このように、ソース管理も非常に視覚的に、かつ簡単に行うことができます。
 開発者が複数人いるようなプロジェクトで効果を発揮するのはもちろんですが、ひとりですべてのプログラムっを書くようなプロジェクトであっても、ソース管理を使用するメリットは非常に大きいと思います。
 「3日前の状態では動いていたのに、変なところをいじったら元に戻せなくなってしまった」というような失敗は、ソース管理ツールのない時代には珍しくないことだったと思いますが、ソース管理を使用すればチェックインした時のポイントであればいつでも戻ることができるので、そのような失敗はほとんど皆無になると思います。
 
 次回は、TFSを使用したバグの管理を紹介したいと思います。