作業項目にリンクした修正ファイルの一覧を取得する:変更セットの取得

今回は作業項目から変更セットを取得するところです。





Tfs007_3

いろいろ処理が詰まっているので、番号を振ってみました。
また、一画面で入りきらなかったので、前半/後半に分けました。

①バージョン管理オブジェクトを取得しています。また、ファイル情報を格納するためのコレクションを作成しています。

②WIQLで取得したWorkItemCollectionからforeachでWorkItemを取り出します。

③作業項目に関連づけれらているリンクを取得します。foreachが使えなかった(と思います)ので、forで回しています。

④作業項目にはいろんな情報をリンクすることができますが、今回は変更セットへのリンクだけを取り出したいので、LinkクラスのArtifactLinkTypeプロパティを使い、リンクの種類が’Fixed in Changeset’でなければ処理対象外としています。

⑤リンクの内容から変更セットにアクセスします。
 リンク内容としてセットされているのが「vstfs:///VersionControl/Changeset/18」という形式になっています。最後の数字部分が変更セットのIDになりますので、これを抽出します。
 抽出した変更セットIDを使って、バージョン管理オブジェクトから変更セットの内容を取得します。

⑥変更セットのコレクションをループで回して変更対象のファイル一覧を作成します。

後半部分です。

Tfs008_2

⑦変更セットには、分岐(ブランチ)/ロックなどの修正以外の情報も格納されているので、ChangeクラスのChangeTypeを参照して修正対象のみを抽出するようにしています。←IsCollectChangeType()
 ChangeTypeの詳細は「ChangeType Enumeration」にあります。
 また、フォルダの変更情報も変更セットに格納されているので、Change.Item.ItemTypeを参照してファイルのみを抽出対象にしています。←IsCollectItemType()

⑧取得したファイルがファイル一覧のコレクションになければ追加、存在すればChangeTypeの内容を追加しています。

基本的にはTFSの標準機能で大体のことは対処できるのですが、こんな感じでTFSから情報を取得するコマンドが簡単に作れますので、自分の開発チームによっては「かゆいところに手が届く」感じのツールを作ることもできます。
今回のネタは自分が欲しかったので作ってみました。

実際に仕事で使うのはいつだろう・・・w

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください