【问题标题】:TFS Listing of all files and version numbers with a particular changesetTFS 列出具有特定变更集的所有文件和版本号
【发布时间】:2012-01-08 07:48:07
【问题描述】:

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

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

【问题讨论】:

  • +1 写得很好的问题。我想您知道您可以通过搜索历史记录从 Visual Studio 获取此信息,然后查看变更集详细信息?但我假设您想以编程方式检索它以用于其他目的。
  • 您愿意编写一个 .NET 应用程序来查询这个吗?完全不支持直接查询 SQL 数据库。
  • 没错,我需要以编程方式进行。如果不支持 TSQL 方法,那么有没有办法使用 VB.Net 代码来做到这一点?

标签: sql-server tsql tfs


【解决方案1】:

如果您希望从 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

来源: http://taoffi.isosoft.org/post/2012/05/23/TFS-database-pause-Change-set-quantitative-statistics-sample

【讨论】:

  • 为什么要直接查询数据库而不是通过对象模型?
  • 我想我的主要原因是“因为你可以”。我完全理解你们不希望人们在数据库中胡闹,而且官方不支持它,但现实是它是一种选择。如果您不舒服,我不建议您在数据库中玩耍,但对我来说,这是在某些情况下获得结果的最简单和最好的方法。
  • 很公平。只是好奇,真的。如果我是一个 DB 人,那么我可能会更受诱惑。 (但我的 SQL 很糟糕。)
【解决方案2】:

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

您需要在 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
    

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

【讨论】:

    【解决方案3】:

    tf.exe changeset 没有提供您想要的信息吗?它有很多选择...

    【讨论】:

    • 我需要以编程方式进行,因此可以通过 TSQL 查询或从 VB.Net 中进行。
    • 没有什么能阻止您以编程方式调用tf.exe 并解析输出。当然,如果您学习 TFS API,那么一定要努力……
    猜你喜欢
    • 2017-05-31
    • 1970-01-01
    • 2014-01-05
    • 2013-04-27
    • 2015-10-11
    • 2021-11-29
    • 2010-12-10
    • 1970-01-01
    • 2012-05-20
    相关资源
    最近更新 更多