kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Visual Source SafeからTFS 2005への移行

先週、Visual Source Safe(以下VSS)からTeam Foundation Server(以下TFS)への移行作業を行いました。まずここ読んで準備。ここまではたぶんたどりつけるはず。
移行に関するチュートリアル
ところがですね、重要なことがいくつか書かれていないのと、メモしているサイトは結構見つかったのですが、「実際にやった」という体験記は探しても見つけられなかったので、思いのほか時間がかかりました。そこで、まとめておきます。もちろん書かれていることもあります。

移行対象バージョンはVSS 2005

チュートリアルにも書かれていますが、移行するにはVSS 2005にアップグレードしてからになります。おそらく多くのVSSは6.0(d)のはずです。まずはVSS 6.0d、続いてVSS 2005にアップグレードしてから移行作業を始めます。移行するにはすべてのソリューションをチェックインして、チェックインが終わったら他の人に書き込み権限は与えないようにしてしまいましょう。

VSS 2005アップグレード後

VSS 6.0からVSS 2005にする際、VSS 2005をインストールした後にVSS 6.0をアンインストールすると、VSS 6.0がソースコード管理プロパイダの設定をごっそり削除してくれるようです。移行作業や、VS 2003でソースコード管理プロパイダ(VSS 2005)が認識されなくなりました。VSS 6.0消さないか、あるいは消したあと、VSS 2005のセットアップで「修復」を実行しましょう。再びソースコード管理プロパイダの環境を構築してくれます。

移行対象プロジェクトはソリューションファイルを必ず作ってから

Visual Studio .NET 2003(2002だったかも)から、複数の言語プロジェクト(C#,C++,VB.NET)をまとめたソリューション(拡張子sln)を作って、その中にプロジェクトファイルを格納します。このslnファイルを作らず、プロジェクトファイルでもTFSに移行した後もVS2005/2008で開くことはできます。
ただし、VSはソリューションある前提で動いているっぽいので、ソースコードのバインドをする際に「ソリューションファイルチェックインしてからバインド」という手間を踏むことになって、大変不便です。
VS2003であれば、プロジェクト移行前にはかならずソリューションファイルを作っておきましょう。作っておかないと、作業時間が2倍以上になります。また、作っていても、ソリューションファイルだけVSSにチェックインしていなかった…なーんてこともあります。移行前はソリューションファイルもチェックインされているかどうか確認しましょう。
最悪なのはVC 6.0のdspファイルのままで、VC 2003のプロジェクトファイルすらチェックインし忘れていたってやつです。いちおうVS 2008のアップグレードウィザードで移行してくれますけどね…VC 2003で追加したはずの設定がなくなったなんてこともあるので…。

なぜか必要なSQL Server Express

移行作業には以下のものが必要です。Team Foundation Server Explorerは移行ツール(VSSConverter)がこの中にしか入っていないので、しかたありません。しかし、SQL Serverは勘弁してよって感じです。

SQL Server 2008にしようかとも思ったのですが、SQL Server 2008 + VS 2005ではGDRを当てないと接続できないというトラップがあるので、SQL Server 2005にしてしまいました。
マイクロソフト公式ダウンロード センターから Microsoft SQL Server 2008 サポート用 Microsoft Visual Studio 2005 Service Pack 1 更新プログラム をダウンロード
また、Visual Studio 2008でもSP1をあてないと、SQL Server 2008に接続できなかったはずです。

パスを忘れない

Team Explorerだけインストールすると、Team Explorerをインストールしているフォルダへのパス(%PROGRAMFILES%\Visual Studio 9.0\Common7\IDE)がないので、失敗するかもしれません。一応つけておきましょう。コマンドプロンプト内だけ有効であればいいので、環境変数セットすれば充分です。

set PATH=%PROGRAMFILES%\Visual Studio 9.0\Common7\IDE;%PATH%

移行先フォルダは存在しなくてもよい

これが移行ぎりぎりまで悩みました。たとえば、移行先のTFSへプロジェクト($/Project)があったとします。移行元のVSSはこの下の$/Project/VSSProj)に移行したいとします。XMLに移行先を書く必要がありますが、存在しないフォルダをXMLに書いてもいいでしょうか?
実はOKです。VSSConverterが勝手にフォルダを作ってくれます。あとはTeam ExplorerでVSSから移行したプロジェクトをロックとか削除、分岐してあげましょう。この辺の操作は結構速くて簡単です。

移行にかかった時間

3800ファイルほどの小さいプロジェクトですが、VSSConveterそのものは20分もかかっていなかったはずです。そのあとのソリューションファイル作ったり、バインド作り直す方がよっぽど時間かかりました。このへん再帰的に自動でやってくれればいいんですけどね。メンバーには任せられない操作だったので、自分でやらざるを得ません。

これから

移行したのはTFS 2005ですが、そのうちTFS 2008へアップグレードします。これはTFS 2005をアンインストール→TFS 2008をインストールで済むらしい。それよりはWSS 2.0から3.0へのアップグレードのほうがよっぽど大変。その後、TFS 2010へのマイグレーションが控えています…。TFS 2010は64bitサーバーへ移行することにしているのでマイグレーションですね。Basicにするか、Standardにするかはまだ悩んでいます。大きな管理しないから、TFS 2010 Basicでもいいかなぁとか思ってます。