【问题标题】:How to get git like statistics from TFS如何从 TFS 获取类似 git 的统计信息
【发布时间】:2011-08-24 01:12:32
【问题描述】:

我已经使用 TFS 工作了几个月,希望获得一些基本统计数据并将其提供给我们的团队。在 git 中,我可以检索“按作者提交”和“按日期提交”等统计信息。

我想显示来自 TFS(或来自 TeamCity)的类似统计数据。

这可能吗?

【问题讨论】:

    标签: git tfs teamcity


    【解决方案1】:

    我发现 Visual Studio Team System Web Access 中的“源”选项卡下有一个变更集视图。选择所需的项目并从项目下拉列表中选择版本历史记录。

    这足以满足我的需要。

    【讨论】:

      【解决方案2】:

      您可以使用 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);
      

      【讨论】:

        【解决方案3】:

        Here你可以找到一些可以在 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]
        
        【解决方案4】:

        有一个TFS Performance Report Pack 可以为您提供信息,但它与您要求的信息不完全相同

        • 执行时间总结
        • 服务器状态 - 源代码控制请求队列
        • 服务器状态 - 绕过代理的顶级用户
        • 服务器状态 - 历史性能趋势
        • 服务器状态 - 最近的性能趋势

        【讨论】:

          【解决方案5】:

          我发现在 TFS 统计数据中四处寻找的最简单方法是使用 Excel 报告 - 您可以以任何您能想象到的东西为中心。如需入门指南,请查看我写的这篇博文:

          http://www.woodwardweb.com/vsts/getting_started.html

          TFS 在常规存储库数据之上提供了一个完整的数据仓库供您挖掘。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-09-23
            • 1970-01-01
            • 2019-09-24
            • 1970-01-01
            • 1970-01-01
            • 2014-09-21
            • 2021-01-13
            • 2017-03-31
            相关资源
            最近更新 更多