如何从 TFS 获取类似 git 的统计信息
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/5977244/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to get git like statistics from TFS
提问by Gilbert Liddell
I've been working with TFS for a few months now and would like to get some basic statistics and make them available to our team. In git, i could retrieve statistics on "commit by author" and "commit by date" etc.
我已经与 TFS 合作了几个月,希望获得一些基本的统计数据并将它们提供给我们的团队。在 git 中,我可以检索有关“按作者提交”和“按日期提交”等的统计信息。
I'd like to show similar statistics from TFS (or from TeamCity).
我想显示来自 TFS(或来自 TeamCity)的类似统计数据。
Is this possible?
这可能吗?
回答by Mark Heath
You can use the TFS API to create any queries you like. You can quite easily iterate through the changesets looking for all commits by a certain author, or commits in a certain date:
您可以使用 TFS API 创建您喜欢的任何查询。您可以很容易地遍历变更集以查找某个作者的所有提交,或某个日期的提交:
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri("http://tfsserver:8080/"));
tpc.EnsureAuthenticated();
VersionControlServer vcs = tpc.GetService<VersionControlServer>();
int latest = vcs.GetLatestChangesetId();
DateTime earliestDate = new DateTime(2011, 1, 1);
do
{
var changeset = vcs.GetChangeset(latest);
if (changeset.CreationDate < earliestDate)
{
break;
}
// do analysis of the changeset here,
// e.g. use changeset.Committer or changeset.Changes
} while (latest-- > 0);
回答by Martin Woodward
The easiest way I find for poking around in TFS statistics is to play with Excel reports - you can pivot on just about anything you can imagine. For a guide to getting started take a look at this blog post I wrote:
我在 TFS 统计中找到的最简单的方法是使用 Excel 报告 - 您可以根据您能想象的任何内容进行调整。有关入门指南,请查看我写的这篇博文:
http://www.woodwardweb.com/vsts/getting_started.html
http://www.woodwardweb.com/vsts/getting_started.html
TFS provides a full data warehouse over the top of the regular repository data for you to dig into.
TFS 在常规存储库数据之上提供了一个完整的数据仓库供您挖掘。
回答by Lars Truijens
Hereyou can find some queries you can execute on the TFS database to get some statistics.
在这里您可以找到一些可以在 TFS 数据库上执行的查询以获取一些统计信息。
-- Change this to the name of your collection DB. You'll need to run these queries for each of your collection DBs.
USE Tfs_DefaultCollection
GO
-- Recent Users
select count(distinct IdentityName) as [Recent Users] from tbl_Command with (nolock)
-- Users with Assigned Work Items
select count(distinct [System.AssignedTo]) AS [Users with Assigned Work Items] from WorkItemsAreUsed with (nolock)
-- Version Control Users
select COUNT(*) AS [Version Control Users] from [Tfs_Configuration].[dbo].tbl_security_identity_cache as ic JOIN tbl_Identity as i ON i.TeamFoundationId=ic.tf_id where ic.is_group = 0
-- Total Work Items
select count(*) AS [Total Work Items] from WorkItemsAreUsed with (nolock)
-- Areas and Iterations
select count(*) AS [Areas and Iterations] from tbl_nodes with (nolock)
-- Work Item Versions
select count(*) AS [Work Item Versions] from (select [System.Id] from WorkItemsAreUsed with (nolock) union all select [System.Id] from WorkItemsWereUsed with (nolock)) x
-- Work Item Attachments
select count(*) AS [Work Item Attachments] from WorkItemFiles with (nolock) where FldID = 50
-- Work Item Queries
select count(*) AS [Work Item Queries] from QueryItems with (nolock)
-- Files
select count(*) as [Files] from tbl_VersionedItem vi with (nolock) join tbl_Version v with (nolock) on v.ItemId = vi.ItemId where VersionTo = 2147483647
-- Compressed File Sizes
select (sum(convert(bigint,OffsetTo - OffsetFrom + 1)) / (1024 * 1024)) AS [Compressed File Sizes] from tbl_Content with (nolock)
-- Uncompressed File Sizes
select (sum(FileLength) / (1024 * 1024)) AS [Uncompressed File Sizes] from tbl_File with (nolock)
-- Checkins
select max(ChangeSetId) AS [Checkins] from tbl_ChangeSet with (nolock)
-- Shelvesets
select COUNT(*) AS [Shelvesets] from tbl_Workspace with (nolock) where type='1'
-- Merge History
select SUM(st.row_count) AS [Merge History] from sys.dm_db_partition_stats st WHERE object_name(object_id) = 'tbl_MergeHistory' AND (index_id < 2)
-- Pending Changes
select count(*) AS [Pending Changes] from tbl_PendingChange pc with (nolock) join tbl_Workspace w with (nolock) on pc.WorkspaceId = w.WorkspaceId where w.Type = 0
-- Workspaces
select COUNT(*) AS [Workspaces] from tbl_Workspace with (nolock) where type='0'
-- Local Copies
select SUM(st.row_count) AS [Local Copies] from sys.dm_db_partition_stats st WHERE object_name(object_id) = 'tbl_LocalVersion' AND (index_id < 2)
-- Command Counts
select Command, count(*) as [Execution Count] from tbl_Command with (nolock) WHERE Command IN ('QueryWorkitems', 'Update', 'GetWorkItem', 'Get', 'VCDownloadHandler', 'Checkin', 'Upload', 'Shelve') GROUP BY Command, Application ORDER BY [Application],[Command]
回答by Gilbert Liddell
I found that there is a change set view in Visual Studio Team System Web Access under the "source" tab. Selected desired project and select version history from the project dropdown.
我发现在“源”选项卡下的 Visual Studio Team System Web Access 中有一个更改集视图。选择所需的项目并从项目下拉列表中选择版本历史记录。
This is sufficient for my needs.
这足以满足我的需要。
回答by Lars Truijens
There is a TFS Performance Report Packwhich will give you information, but it is not exactly the information you requested
有一个TFS 性能报告包可以为您提供信息,但它不是您所要求的信息
- Execution Time Summary
- Server Status - Source Control Request Queue
- Server Status - Top Users Bypassing Proxies
- Server Status - Historical Performance Trends
- Server Status - Recent Performance Trends
- 执行时间总结
- 服务器状态 - 源代码管理请求队列
- 服务器状态 - 绕过代理的顶级用户
- 服务器状态 - 历史性能趋势
- 服务器状态 - 最近的性能趋势