1

「追跡番号」を取得するために各チェックインを要求するチェックイン メモのチーム プロジェクト コレクション ソース管理設定があります。この番号は TFS の外部にあります。特定の追跡番号を持つすべての変更セットを検索する必要があります。

結果として得られる変更セットのリストは、毎月の展開のために何を GetLatest するかを教えてくれます。

-- ワークアイテムは使用しません

この .SQL によって、探しているリストが得られます。Visual Studio からコードでこれにアクセスしたい。

SELECT ReleaseNoteId, FieldName, BaseValue
from Tfs_DefaultCollection.dbo.tbl_ReleaseNoteDetails
  where ReleaseNoteId in (SELECT ReleaseNoteId
FROM Tfs_DefaultCollection.dbo.tbl_ReleaseNote
  where DateCreated between '2013-01-01' and '2013-01-31')
    and FieldName = 'Tracker #'
    and BaseValue = '18570'

Tfs_DefaultCollection.dbo.tbl_ReleaseNoteDetails で使用できるオブジェクト参照は何ですか?

4

2 に答える 2

0

簡単なクエリと検索が必要な場合は、新しい作業項目フィールドを作成し、チェックイン時に作業項目を関連付けることをお勧めします。作業項目は、UI で完全なクエリ機能を備えており、Reporting ウェアハウスに転送されます。

オブジェクトを使用して特定のフォルダー、日付範囲などの履歴を取得し、フィルター処理QueryHistoryParametersを繰り返すことができます。CheckinNotes

  var projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(
      new Uri("http://localhost:8080/tfs/DefaultCollection"));
  var versionControlServer = projectCollection.GetService<VersionControlServer>();

  var query = new QueryHistoryParameters("$/Scrum/**", RecursionType.Full);
  var changesets = server.QueryHistory(query);

  changesets.Where(cs => cs.CheckinNotes.Any(note => note.PropertyName == "Tracker #" 
       && note.Value == "18570"))

これはひどく速くなるつもりはありません。迅速な解決策を得るには、作業項目の関連付けを使用します。

于 2013-01-31T21:24:27.193 に答える
0

TFS API には 1 対 1 のオブジェクト参照はありません。これは、通常、データベースのような構造で作業しないためです。

あなたの説明から私が理解していることは、変更セットに必要な情報があることです。その場合、 を使用しVersionControlServerて変更セットを取得し、そこから情報を取得できます。

TfsTeamProjectCollection tfsConnection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://TFS:8080/TFS/DefaultCollection"));
VersionControlServer sourceControl = (VersionControlServer)tfsConnection.GetService(typeof(VersionControlServer));
IEnumerable changesets = sourceControl.QueryHistory(ServerPath, VersionSpec.Latest, 0, RecursionType.Full, null, new DateVersionSpec (new DateTime(2013,1,1)), new DateVersionSpec (new DateTime(2013,1,31)), Int32.MaxValue, true, false);
foreach (Changeset change in changesets)
{
  // check where the information is stored in the changeset, may change.Changes
}

正しい方向に進むための単なるアイデア。

于 2013-01-31T16:48:20.343 に答える