如何在TFS中以编程方式确定代码块的作者?

时间:2011-06-28 13:32:58

标签: visual-studio-2010 tfs

我们正在使用Team Foundation Server(Visual Studio 2010)。

如何以编程方式获取特定代码块的编写器?

3 个答案:

答案 0 :(得分:0)

使用TFS API,您可以获得该数据。每个变更集都有一个提交者。我会把提供的代码here。从这里,您可以添加:

foreach (var change in cs.Changes)
{
    if (change.Item.ServerItem != serverItem)
    {
        return;
    }
    //Get commiter
    cs.Committer

虽然这不能让你100%完成任务,但它至少是一个起点。

答案 1 :(得分:-1)

相当简单。

我的博客上有一个工作演示=> http://geekswithblogs.net/TarunArora/archive/2011/06/26/tfs-2010-sdk-smart-merge-programmatically-create-your-own-merge.aspx

被修改

我很抱歉我误解了你的问题。您正在寻找的是能够基于TFS中的特定文件路径获取changesetId,然后能够查看该变更集的已修改项目,然后能够在源代码中看到修改并知道作者是谁源变化是。对?

如果这是正确的,你能不能做到以下几点,

public static void GetMergeDetailsForChangeSet()
    {
        var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("Enter the url of team project"));
        var versionControl = tfs.GetService<VersionControlServer>();

        var a = versionControl.GetChangeset(12322);

        VersionSpec changeSpec = new ChangesetVersionSpec(a.Changes[0].Item.ChangesetId);

        var changeSetDetails = a.Changes[0].Item.VersionControlServer.QueryMergesWithDetails(
            null,
            null,
            0,
            a.Changes[0].Item.ServerItem,
            changeSpec,
            a.Changes[0].Item.DeletionId,
            changeSpec,
            changeSpec,
            RecursionType.Full);

    }
  1. 我的博客文章向您展示了如何以编程方式从TFS获取变更集
  2. 现在您已拥有变更集,您可以检索更改的文件。
  3. 在上面的示例中,我从该变更集中获取合并的详细信息。在您的情况下,您将不得不使用GetItems(String,VersionSpec,RecursionType,DeletedState,ItemType,Boolean)
  4. 变更集对象有一个属性“所有者”,这将告诉您更改的作者是谁。
  5. 现在,如果要选择该列表中第一个变更集的详细信息,则必须访问Item.VersionControlServer,请在此处查看详细信息http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.item.versioncontrolserver.aspx
  6. 这有帮助,我可以提供其他详细信息吗?

    HTH。

    干杯,塔伦

答案 2 :(得分:-2)

MSDN有Annotate选项用于跟踪此类信息,但默认选项是文件级和签入操作。对于这样的信息,我们通常使用代码注释,它可能不是那么专业但是很好。