如何从Microsoft.TeamFoundation.WorkItemTracking.Client提交访问git

时间:2018-08-16 18:45:59

标签: tfs git-commit tfs-workitem workitem tfs-aggregator

我在内部使用TFS 2017 Update 1。我在提交的日志注释中使用#ID,以便将(用户故事,任务等的)工作项ID与源代码的GIT提交相关联。它可以正常工作(我可以看到从workitem界面提交的链接),但是我想将TFS SDK API与tfs聚合器一起使用,以便更好地管理GIT提交(例如使用自定义字段的仪表板)。如何从Microsoft.TeamFoundation.WorkItemTracking.Client访问git commit?

1 个答案:

答案 0 :(得分:0)

git提交链接到类型为“ ExternalLink”的工作项。因此,您可以获得工作项的链接以查询该信息。

    WorkItemStore wis = ttpc.GetService<WorkItemStore>();
    int workitemid = 1;
    WorkItem wi = wis.GetWorkItem(workitemid);
    foreach (Link w in wi.Links)
    {
        if (w.GetType().ToString() == "Microsoft.TeamFoundation.WorkItemTracking.Client.ExternalLink")
        {
            ExternalLink el = (ExternalLink)w;
            Console.WriteLine(el.LinkedArtifactUri);

        }

    }

LinkedArtifactUri将包含git commit的ID。然后您可以通过以下方式获取提交信息:

            GitHttpClient ght = ttpc.GetClient<GitHttpClient>();
            GitCommit gc = ght.GetCommitAsync("CommitID", "RepoID",99).Result;
            Console.WriteLine(gc.Committer.Date);
            Console.WriteLine(gc.Committer.Name);
            foreach (GitChange gch in gc.Changes)
            {
                Console.WriteLine(gch.Item.Path);
            }
            Console.ReadLine();