TFS列出具有特定变更集的所有文件和版本号

use*_*202 7 t-sql sql-server tfs

我是TFS的新手,需要编写TSQL查询以获取特定变更集版本号中包含的所有文件和版本号的列表.在线搜索表格以获取此信息时,我发现有些人提到使用Tfs_Warehouse数据库和其他使用Tfs_DefaultCollection数据库的人.我有以下问题:

  • 这两个数据库有什么区别?
  • 你为什么要用一个而不是另一个呢?
  • 您使用哪些表来获取特定变更集的文件/版本信息?

Mat*_*att 9

如果您希望从SQL Server数据库获取此数据,可以使用以下查询来帮助您入门:

SELECT 
    chg_set.CreationDate,
    chg_set.ChangeSetId, 
    v.FullPath
FROM dbo.tbl_ChangeSet (nolock)AS chg_set 
    INNER JOIN dbo.tbl_Version (nolock)AS v ON chg_set.ChangeSetId = v.VersionFrom 
    LEFT OUTER JOIN dbo.tbl_File (nolock) AS f ON v.FileId = f.FileId
WHERE (chg_set.ChangeSetId = [Your changeset ID])
ORDER BY chg_set.CreationDate, v.FullPath
Run Code Online (Sandbox Code Playgroud)

资料来源:http: //www.isosoft.org/taoffi/post/2012/05/22/TFS-database-pause-Change-set-quantitative-statistics-sample.aspx


Gra*_*day 2

您可以使用TFS 对象模型中的VersionControlServer.GetChangeset() 方法。

您需要在 GAC 中添加对以下程序集的引用:

  • Microsoft.TeamFoundation.Common
  • Microsoft.TeamFoundation.Client
  • Microsoft.TeamFoundation.VersionControl.Client

    Private Shared Sub Main(ByVal args As String())
        Dim tfs As TfsTeamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(New Uri("http://tfsserver:8080/tfs/CollectionName"), New UICredentialsProvider)
        tfs.Connect(ConnectOptions.None)
        Dim vcs As VersionControlServer = tfs.GetService(Of VersionControlServer)
        Dim changeset As Changeset = vcs.GetChangeset(changeset ID, True, False)
    End Sub
    
    Run Code Online (Sandbox Code Playgroud)

然后您可以检查 .Changes 属性以查看变更集中包含的所有更改。