我们为签到备注提供了团队项目集合源控制设置,要求每次签入都要捕获“跟踪号”。这个数字是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?
答案 0 :(得分:0)
TFS API中没有1to1对象引用,因为您通常不会像数据库那样处理结构。
我从您的描述中了解到,您在变更集中拥有所需的信息。在这种情况下,您可以使用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
}
只是想要朝着正确的方向前进。
答案 1 :(得分:0)
如果您想轻松查询和搜索,最好创建一个新的工作项字段,并在签入期间关联工作项。工作项在UI中具有完整的查询功能,甚至可以传输到报告仓库。
您可以使用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"))
这不会非常快。要获得快速解决方案,请使用工作项关联。