kkamegawa's weblog

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

TFS 2010のソースコード格納場所とデータベーススキーマ

グーグルのバグ予測アルゴリズムを実装したツール「bugspots」、オープンソースで公開 - Publickey
Googleのバグ予想アルゴリズムBugSpotsのオープンソース実装を見て、TFSでもできるだろうこれと思ってやってみたら意外と苦労してます。
最初はTFSのレポーティング機能を使えばいいかと思っていました。TFSWareHouseのdbo.Dim_Fileを見ればいいと思っていたのですが、この定義はこんな感じ。

USE [Tfs_Warehouse]
CREATE TABLE [dbo].[DimFile](
	[FileSK] [int] IDENTITY(1,1) NOT NULL,
	[FileName] [nvarchar](260) NULL,
	[FileBK] [nvarchar](380) NOT NULL,
	[FilePath]  AS (right([FileBK],len([FileBK])-(37))),
	[FileExtension] [nvarchar](20) NULL,
	[ParentFileSK] [int] NULL,
	[LastUpdatedDateTime] [datetime] NOT NULL,
	[TeamProjectCollectionSK] [int] NULL,
(略)

うーん、惜しい。LastUpdateDateTime列がよさそうなんですが、これWareHouseが集計した時間っぽいのです。レポーティングの機能を追加してWarehouseを実行したと思われる時間が入っていました。
実データはどこかといえば、Tfs_コレクション名.dbo.tbl_VersionedItemにバージョン管理されているファイル名が格納されていて、Tfs_(コレクション名).dbo.tbl_Versionがバージョン管理された(最新の)ファイルのようです。チェックインしたchangesetがある
tbl_fileにファイルがあるのはわかるんですが、これがハッシュ値になっていて、他との関連がよくわからない。チェックインした日付となるチェンジセットはtbl_ChangeSetに格納されているけど、このテーブルにあるchangesetidを使えばいいのですが、どこに関連付けられているのかよくわからない。今アクセスできるTFSがデータベースダイアグラム作れない状態になっているので、ダイアグラムからもわからない…はっ、Visual StudioのEFデザイナーに解析させればいいか?