VSSからTFSへの移行例:データ移行

最後のデータ移行です。

○移行用設定ファイル作成
 データ移行のための設定ファイルを作成します。
 基本はMSDNのサンプルでOKなのですが、かの有名な川保さんのページにあるように、設定ファイルのサンプルに一部情報が不足しています。(接続先TFSのcollection属性)
 collection属性を付け加えた設定ファイルのサンプルはこんな感じになります。
  <?xml version="1.0" encoding="utf-8"?>
  <SourceControlConverter>
        <ConverterSpecificSetting>
              <Source name="VSS">
                    <VSSDatabase name="[VSS DBファイルの格納フォルダ]"></VSSDatabase>
                    <UserMap name="[ユーザマッピングファイル名]"></UserMap>
              </Source>
              <ProjectMap>
              <Project Source="$/" Destination="$/[TFSプロジェクト名]"></Project>
              </ProjectMap>
        </ConverterSpecificSetting>
        <Settings>
          <TeamFoundationServer name="[TFSサーバ名]"
           port="8080"
           protocol="http"
           collection="tfs/[接続先Collection名]"></TeamFoundationServer>
         <Output file="[移行結果出力ファイル名]"></Output>
       </Settings>
  </SourceControlConverter>

○データ移行実行
 Visual Studio コマンドプロンプト(2010)を管理者権限で起動します。

 VSSConverterコマンドをMigrateオプションをつけて実行します。
 VSSConverter Migarate [移行用設定ファイル名]

 ここで、KB950185のパッチが適用されていないと、こんな確認メッセージが表示されます。

Vss2tfs02_2

 しかし、2011/07/23時点で、MSのKB950185の情報ページを見ると、パッチファイルはダウンロードできない状態になっています。
 ここにはあるようですが、これを使ってサポートが受けれるかどうかは確認していません。

 ’Y’を入力すれば、とりあえず処理は継続できます。

 2~3個の確認メッセージとVSS接続時のパスワード確認後に、実際の移行処理が実行されます。(状況に応じて確認メッセージは変わります)

Vss2tfs09

 しばらくすると、移行が完了します。
 全体的な移行結果については[移行結果出力ファイル名(.xml)]に出力されます。

一度設定ファイルが出来上がってしまえば、移行対象が複数あってもファイルコピペ→一部修正で対応できるので、さほど難しくはないと思います。
あとは、VSSが壊れていないことを祈るのみです^ ^;

VSSからTFSへの移行例:VSS分析→ユーザマッピング定義作成

 移行対象のVSSに対して、移行可能かどうかの分析と、VSSを使用したユーザ一覧を出力させます。
 次に、VSS側ユーザ一覧を元に、VSS上で使用されていたユーザと、TFS上のユーザを結びつけるための準備をします。

○分析用設定ファイルの作成
 VSS移行ツールであるVSSConverter.exeを使用して、VSS上で使用されていたユーザ名一覧をファイルに出力します。
 概要については、MSDNサイト内の
 「方法 : ソース管理の分析および移行の設定ファイルを作成する
 「VSS コンバータ設定ファイルのサンプル
 になります。
 サンプルとしてはこんな感じです。
  <?xml version="1.0" encoding="utf-8"?>
  <SourceControlConverter>
        <ConverterSpecificSetting>
              <Source name="VSS">
                    <VSSDatabase name="[VSS DBファイルの格納フォルダ]"></VSSDatabase>
                    <UserMap name="[ユーザ一覧出力ファイル名(.xml)]"></UserMap>
              </Source>
              <ProjectMap>
              <Project Source="$/"></Project>
              </ProjectMap>
        </ConverterSpecificSetting>
        <Settings>
         <Output file="[分析結果出力ファイル名(.xml)]"></Output>
       </Settings>
  </SourceControlConverter>
 ※設定ファイルの文字コードをUTF-8で保存しないと実行時に怒られます。
 分析の時点では、TFSに関する情報は必要ありません。

○分析実行
 Visual Studio コマンドプロンプト(2010)を管理者権限で起動します。

Vss2tfs01

 VSSConverterコマンドをAnalyzeオプションをつけて実行します。
 VSSConverter analyze [分析用設定ファイル名]

 しばらくすると、分析が完了します。

Vss2tfs07

 全体的な分析結果については[分析結果出力ファイル名(.xml)]に、VSS内で使用されたユーザ一覧については[ユーザ一覧出力ファイル名(.xml)]に出力されます。

○TFSプロジェクト作成
 移行先のTFSプロジェクトを作成します。

○TFSプロジェクトに対して利用ユーザを設定
 VSS内で使用されたユーザの割り当て先となるユーザを、TFSプロジェクトに登録します。

○ユーザマッピング定義ファイル作成
 分析時に作成されたユーザ一覧ファイルを元に、VSS側ユーザとTFS側ユーザのマッピング定義を作成します。
 ・変更前(分析時)
    <UserMap From="VSSUser01" To="" />
    <UserMap From="VSSUser02" To="" />
    <UserMap From="VSSUser03" To="" />
 ・変更後
    <UserMap From="VSSUser01" To="TFSUser01" />
    <UserMap From="VSSUser02" To="TFSUser02" />
    <UserMap From="VSSUser03" To="TFSUser03" />

VSSからTFSへの移行例:はじめに

 さて、TFS環境が構築できたら次は移行ということで、VSSからTFSへの移行例みたいなものを。

○準備物
 ・Visual Studio 2010/SQL Server 2008
  Professional以降であれば、VSをインストールした環境で大丈夫です。
  Team Explorer環境だと、SQL ServerがインストールされないのでNGです
  →VSS移行ツール(VSSConverter)は、移行処理にSQL Serverを使用します。
  Expressは...確認してません^ ^;
 ・Visual SourceSafe 2005
  VSS6.0dでは移行できません。
  ただ、VSS2005が必要なのは移行処理で使用する端末のみです。元データはVSS6.0dのままで実行は可能です。
 ・移行後に保持されない情報の確認
  MSDNサイト内の「ソース管理の移行のための VSSConverter コマンド ライン ツール」に掲載されています。
  今回は、これらの対象がない前提にします。
 ・(できれば)実機
  仮想環境でも実行は可能ですが、結構リソースを食いまくるみたいで、「止まったか?」と思うほど時間がかかる場合があります。
  あくまで一例ですが、
   仮想環境:2日
    CPU:1個(SCVMM上では1.00GHz PentiumⅢ Xeon)
    メモリ:1GB
    OS:Win7
   実機  :30分
    CPU:Core 2 Duo(詳細は忘れました^ ^;)
    メモリ:1GB
    OS:Win7
  という結果がでたので、実機を準備したほうが幸せだと思います。

TFS2010で正式にSQL Server 2008 R2が使用可能に

TFS2010のライセンス上、TFSだけで使用する場合に限り、SQL Server Standardが使用可能となっていましたが、出荷タイミングの問題で2008に限定され、2008R2は使用できませんでした。
(あくまでライセンス上の問題であり、使用上は問題ないようです)

しかし(というか、やっと)、ライセンス上でも2008R2が使用可能になったとbharryのブログに記事が掲載されました。
MSDN Subscribers can now upgrade their TFS 2010 SQLServer to SQL 2008 R2

これで、Windows Server 2008 R2にTFSを構築するのに警告メッセージを見なくて済みます(^_^;)

TFS2010環境の作り方の1例:TFSセットアップ&構成ウィザード その2

○SharePointサイトにプロジェクト管理者を登録
 Internet Explorerでコレクション管理サイト(http://[サーバ名]/sites/DefaultCollection)に移動します。
 なぜか、ユーザ名/パスワードを聞かれるので、DCAdminでログインします。

Tfs01

 「サイトの操作」-「サイトの設定」で管理ページに移動し、「サイトコレクションの管理者」でDevAdminを追加します。


Tfs02_2

 

一度「サイトの設定」に戻り、「権限の設定(詳細)」でDevAdminを「フルコントロール」で追加します。


Tfs03_2


Tfs04

○レポートサイトにプロジェクト管理者を登録
 http://[サーバ名]/Reportsにアクセスし、「フォルダー設定」を選択します。

Tfs05

 「新しいロールの割り当て」でDevAdminを「Team Foundation Content Manager」として追加します。

Tfs06


Tfs07

サーバ側での作業はこんなところです。あとはクライアントで。

TFS2010環境の作り方の1例:TFSセットアップ&構成ウィザード その3

○クライアントでDevAdminとしてログインし、VSからプロジェクト(TestPrj01)を作成します。

Tfs08_2

プロジェクト名以外はデフォルトのままで問題ないでしょう。

○プロジェクトのグループメンバーシップに対して、「共同作成者」として開発者グループ(Developers)を登録

Tfs09_2


Tfs10_3


Tfs11

○SharePointサイトにプロジェクト作業者を登録
 チームエクスプローラーで、プロジェクトを右クリックして「プロジェクトポータルの表示(H)…」を選択します。

Tfs12

 「サイトの操作」-「サイトの設定」で管理画面に移動し、「権限の設定(詳細)」で権限設定画面に移動し、「新規」でDevelopersを「投稿」として追加します。

Tfs13


Tfs14_3

こんな感じで設定すれば、プロジェクト管理者(DevAdmin)と通常の開発者(Dev01とか)の権限を分けつつ、比較的簡単に使えるのではないかなと。
念のためですが、手順に不備があっても責任は持ちません。

一応、全部を1ファイルにまとめたのをSkyDrive(http://bit.ly/iqekxr)に置きました。

ファイルがあるのになんで分割してBlogに上げたかといいますと・・・・
会社からはネットストレージ系はブロックされて参照できないんです(>_<)

ちなみに、ビルドサーバ構築については全く触れていません。いえ、「そこまで手が回りません」が正解です。
でも、継続的インテグレーション(CI)とかゲートチェックインとか自動テストとか重要なタスクが関連するとこなので、どこかでやりたいです。

TFS2010環境の作り方の1例:はじめに

最近、Team Foundation Server 2010環境を導入できそうなので、いろいろ遊んでみてます。
ところが、SQL Serverあり・SharePointありなので設定が多岐に渡り、頭の中がまとまりません。
しかも、たまにしか行わない作業(のはず)なので、次回作業するときには絶対忘れていることでしょう。
なので、メモがわりに環境作成の一例をまとめてみました。
前提として
 ・プロジェクト単位で担当者が入れ替わる
 ・とりあえず、プロジェクトサイトもレポート機能も使ってみたい
 ・1台のサーバーしかない
 ・でも、容量は食いそう
という設定とし、「標準の単一サーバー」で構築してみます。

余分な設定とかあるかもしれませんが、ご愛嬌ということでご勘弁をば。<(_ _)>

○準備物
 ・サーバ
  メモリは最低2GB必要です。2GB未満だとTFS構成ウィザードでエラーになります。
 ・Windows Server 2008 R2 SP1
 ・SQL Server 2008 R2
 ・Team Foundation Server 2010 SP1
 ・ドメイン:今回は「blkworld.~」で作成してみました。
 ・ドメイン管理者ユーザ:blkworld\DCAdmin
 ・TFSサービス用ユーザ:blkworld\TFSSvc
 ・SQL Serverサービス用ユーザ:blkworld\SQLSvc
 ・開発者グループ:blkworld\Developers
 ・開発者ユーザ:blkworld\Dev01/blkworld\Dev02/blkworld\DevAdmin
  →blkworld\Developersに追加
  ※DevAdminはプロジェクト管理者

○サーバセットアップ
 ドメイン参加をしておきます。
 サーバーマネージャーにある「IE ESCの構成」で、セキュリティ強化の構成を管理者だけOFFにしておきます。

TFS2010環境の作り方の1例:SQL Server

○SQL Serverセットアップ
 DCAdminでセットアップしていきます。
 まっさらな環境だと.NET Frameworkを有効にするかどうか聞かれるので「OK」にします。

Sql01

 基本的にはデフォルトのままです。
 追加機能はこんな感じで。

Sql02

 インスタンス名は既定のまま(MSSQLSERVER)にしましょう。変更すると、後が大変です。

 サービスアカウントは全て「blkworld\SQLSvc」で統一します。


Sql03

 SQLServer管理者にDCAdmin/DevAdmin/TFSSvcを追加します。

Sql04


Sql05

次はやっとTFSのインストールです。

TFS2010環境の作り方の1例:TFSセットアップ&構成ウィザード その1

○TFSセットアップ
 TFS-x86/TFS-x64をお間違えなく。Windows Server 2008 R2は64bitしかないですから、TFS-x64フォルダ内のsetup.exeを実行します。
 1台なので、Team Foundation Serverプロキシは不要です。

○TFS構成ウィザード
 「標準の単一サーバ」で構築します。
 SharePoint/SQLServerReportingServiceにアクセスするときのサービスアカウントとしてTFSSvcを指定します。

Tfssetup01

○TFSのグローバルグループにユーザを登録
 Team Foundation管理者にDevAdminを追加します。

Tfssetup02


Tfssetup03

あとはSharePointとReportingサービスとの格闘(?)がメインです。
セットアップ自体は非常に簡単ですね。

Tech Fielders セミナー ALM Day参加

さる3/9、Tech Fielders セミナー ALM Dayに参加させて頂きました。

長沢さんによるTFSの全般的な機能説明(その場で環境構築しながら!)と、@kaorun55さんによる「TFSの歩き方」というタイトルでの、プロセスにTFSを合わせて使う方法(考え方?)についてセッションがありました。

個人的に印象に残ったのが、
 ・単機能(ソース管理/タスク管理/自動ビルド管理など)の評価ではなく、機能間の関連性を評価することが重要
 ・「ツールを使用すること」が目的ではなく、「価値のあるものをより早く提供する」ことが目的
といったところでした。

自分の部署では「決められた作業を行えばよい」的な感じが強いので、もっと良い方向にカイゼンして行きたいなと改めて感じさせてもらえる一日でした。