Subversion が気になる あ・な・た に贈る Team Foundation Server の紹介♪
ごくたまにですが、聞かれますので、ちょっとだけ書いていきたいと思います。
Subversion (以下、SVN) は、オープンソースのソースコード管理ツール(VCS: Version Control System)です。Team Foundation Server (以下、TFS) はソースコード管理を含む、開発プラットフォームです。したがって、同じカテゴリのツールとは、私はまったく思っていないのですが、以下の観点で見ていきたいと思います。
※詳細に言及したり、比較する気はありません。気になるならば、ご自身でお調べくださいw
SVN と TFS は同じか?
- SVN も TFS もソースコードのバージョン管理ができます。
- SVN も TFS も変更セット(※開発のトランザクションの単位でのバージョン管理)が行えます。
- SVN も TFS も Web セントリックなアーキテクチャです。
- SVN も TFS も比較やマージのツールを選択できます。
SVN と TFS は違う?
- SVN には、Windows エクスプローラーから利用できる TortoiseSVN がある!
- TFS だと、TFS Power Tools にて、同様の機能を提供しています。
(TFS Power Tools の Windows エクスプローラー拡張機能 - その1 [クリックで拡大表示])
(TFS Power Tools の Windows エクスプローラー拡張機能 - その2 [クリックで拡大表示]) - また、オープンソースの SVNBridge というのがあり、そのものズバリ!TortoiseSVN などの SVN クライアントが使えてしまいます。
- SVNBridge: https://svnbridge.codeplex.com/
こちらは、サーバーサイドと、クライアントサイドのツールが備わっています。したがって、チーム全体で SVN クライアントから TFS に接続したいならば、サーバーサイドのツールをセットアップすればよく、一人ないし、数名の開発者だけが、SVN クライアントから使いたいという場合は、クライアントサイドのツールを各開発端末にセットアップすればいいです。
このサーバーサイドの仕組みは、このツールをホストされている CodePlex でも利用されています。CodePlex は TFS がベースですが、SVN の各クライアントからも接続ができるようになっています。
- SVNBridge: https://svnbridge.codeplex.com/
- TFS だと、TFS Power Tools にて、同様の機能を提供しています。
- SVN と Trac や Redmine のように、ソースコード管理とバグ トラッキング(BTS/ITS)を連携することもできる!
- TFS は、Trac や Redmine と連携する仕組みは、提供していません。なぜならば、BTS/ITS の仕組みも包含しているからです。作業項目と呼んでいる追跡・管理機能で、要求(ユーザーストーリー)からタスク、バグ、テスト ケース(テストスイート、テスト ステップ、テスト構成、テスト環境、テスト結果なども)、バグ、チームの懸案事項などを追跡・管理できます。
- 同じ TFS 内で実現しているので、各ツールごとにリポジトリが異なるとか、使い勝手が異なるとか、連携を開発者が過度に意識しなければいけない、といったことはありません。
- Visual Studio の中で開発時に必要な情報はすべて手に入ります(Webブラウザ開くとか、Excel 開くとか不要です)。
(Visual Studio 2010 の中で、タスクとソース管理を見ているところ [クリックで拡大表示]) - 変更セット単位でのバージョン管理はもちろんのこと、タスクやバグとの関連付けも、ごく自然です。
タスクやバグと関連付けをしていないとチェックイン(コミット)することができないようにすることも設定一発で行えます。
- ソースコードのバージョン管理は、本来すごく難しいものです。開発プロセスとも密接に関係し、ソフトウェアの構成を決定したり、ソフトウェア構成を再現したり、把握したりするのに役立つからです。単にファイルを版管理するだけ、共有するだけに使うならば簡単ですが、それは本来の目的ではないことが多いでしょう。そんなときは、バグやタスクと関連付けることをしっかりと考えましょう。タスクやバグは、開発プロセスのワークフローを形成します。また、ソースコードという細かい粒度の把握、追跡、管理から、利害関係者が理解できるタスクやバグに、粒度を挙げてくれる働きがあります。
- Hudson, Jenkins CI を使いたいから SVN!
- SVN と連携をさせて、自動ビルドや継続的インテグレーション(CI)を行いたいというニーズも増えてきました。Hudson や Jenkins CI の記事でも SVN との連携が取り上げられることが多いですね。では、TFS はどうか?というと:
- TFS は自動ビルドの仕組みも包含しています。継続的インテグレーションも設定一発です。継続的インテグレーションの進化系であるゲート チェックインもあります。
- TFS は、Windows サーバーがいるでしょう?
- ここまで紹介した機能であれば、Windows クライアント(Vista/7)にサーバー環境を構築することもできます。「基本構成」と呼ばれるセットで、ソースコードのバージョン管理、バグやタスクの追跡・管理、自動ビルドが行えます。これらは、単一のリポジトリで管理され、リポジトリも SQL Server Standard を使うことができます。軽量化をしたいならば、SQL Server Express も選択できます。
- SVN は Windows だけでなく、Mac OS、 Linux、UNIX などの開発環境でも使えるから便利
- TFS には、Team Explorer Everywhere (以下、TEE) というクロスプラットフォーム環境から TFS に接続できるツールがあります。
- TEE により、以下が行えます:
- Eclipse から TFS で管理するリソースに Visual Studio と同等に利用できる
- コマンドライン インターフェイスで、TFS で管理するリソースにアクセスできる
- TFS は Web のインターフェイスもあるので、ソースコードの状況を把握したり、バグやタスクの情報を閲覧、更新したりすることもできます。
- TFS は VSS でしょ?
- TFS と VSS は全く異なるツールです。TFS に VSS の機能が包含されているわけではありません。でも似ているところだってあります。
- VSS と親和性の高い Look & Feel (見た目が似ているだけで中の仕組みは全く異なります)
- ロックも行える(ロックを行わない運用ももちろんできます)
- TFS と VSS は全く異なるツールです。TFS に VSS の機能が包含されているわけではありません。でも似ているところだってあります。
まとめ
まとめでもありませんが、TFS は、開発リソースを包括的に追跡・管理することができるシステムです。「開発者が本来の能力を発揮し、よりクリエイティブな活動に注力するための環境づくり」それが TFS の役目です。
手段ではなく、目的に対して SVN も TFS もどう貢献できるか・・・といった視点で見てみてはいかがでしょうか。
何かのお役にたてれば幸いです。
何か、お手伝いが必要でしたら、ご連絡ください。