我们正在使用Team Foundation Server 2012。
我们有一个人在2016年8月9日的Changeset 13646中提交了97个文件(不包括设计人员和资源文件)。
2016年8月18日十(10)天后,他在Changeset 13716中推出了这些更改。
在此期间,其他工作项目已提交并完成。
有没有办法查询TFS以查找13646和13716之间的任何变更集中包含的文件名和 WorkItems ?
我希望这是一个可以在SQL Server Management Studio中运行的SQL查询。
答案 0 :(得分:7)
虽然这是针对TFS 2013的,但我希望它在2012年有效。这是针对tfs_warehouse数据库运行的
SELECT DISTINCT df.[FileName]
,df.FilePath
,dcs.ChangesetID AS 'ChangeSetID'
,dwi.System_id AS 'WorkItemID'
,dwi.System_WorkItemType
,dwi.System_State
,dwi.System_CreatedDate
,dwi.System_ChangedDate
FROM DimFile df
JOIN FactCodeChurn fcc ON df.FileSK = fcc.FilenameSK
JOIN FactWorkItemChangeset fwi ON fcc.ChangesetSK = fwi.ChangesetSK
JOIN DimWorkItem dwi ON fwi.WorkItemID = dwi.System_id
AND fwi.TeamProjectCollectionSK = dwi.TeamProjectCollectionSK
AND fwi.RemovedDateTime = CONVERT(DATETIME, N'9999', 126)
JOIN DimChangeset dcs ON dcs.ChangesetSK = fcc.ChangesetSK
WHERE dcs.ChangesetID BETWEEN 13646 AND 13716
ORDER BY dcs.ChangesetID
文件路径中也有文件名,但我想我会将文件名作为单独的字段包含
答案 1 :(得分:5)
还有一种方法可以使用Relational数据仓库对SQL查询执行此操作。您需要访问tfs_warehouse
数据库。您必须加入一些维度表才能获得所需内容:
您可以使用dbo.WorkItemChangeset
作为变更集和工作项之间的链接,使用dbo.CodeChurn
作为变更集和文件之间的链接。
关于此的文档陈旧且不完整,但这里有一些链接可以解释事实和维度表:
请注意,它们只是一个Tfs_Warehouse
数据库,因此所有项目集合中所有项目的信息都存储在此处。因此,您无法信任变更集或工作项ID是唯一的。这些值在单个项目集合中是唯一的,因此在Tfs_Warehouse
项目集合和变更集或工作项ID的组合是唯一的。
很遗憾,我目前无法访问Tfs_Warehouse
数据库,因此我无法向您提供确切的查询。但是this question有一个类似的查询,你可以修改。
答案 2 :(得分:4)
tf history
命令无法显示相关的工作项,这些工作项不符合您的要求。
不建议直接查询数据库。相反,您可以使用tf changeset命令显示完整信息,其中包括已更改的项目和相关工作项:
tf changeset changesetnumber /noprompt /collection:TeamProjectCollectionUrl
在您的情况下,您需要运行两个命令,如:
tf changeset 13646 /noprompt /collection:TeamProjectCollectionUrl
tf changeset 13716 /noprompt /collection:TeamProjectCollectionUrl
在以下屏幕截图中查看我的示例:
答案 3 :(得分:3)
下面的命令将返回修改的文件列表以及签入注释,我认为您应该也会看到工作项(但我没有测试过该部分)到日志文件中。请在以下命令中更新集合URL,分支名称。
tf history /collection:"tfsserverurl/collection" $/TFSbranchName /noprompt /recursive /format:detailed /v:C13646~C13716 > changeset.log
示例:
变更集:13646用户:姓氏,名字日期:星期四,二月 16,2017 4:26:50 PM
评论:从12月分行代码中添加了错过的值/代码 合并
项目:编辑$ / TFSBranchName / abc.cs
签入注释:代码审核者:绩效审核员:安全性 审阅者:
如果您复制所有"项目"从日志文件(changeset.log)中,您应该获得在这些changsesets中修改的所有文件。