Tfs access git如何从Microsoft.TeamFoundation.WorkItemTracking.Client提交

Tfs access git如何从Microsoft.TeamFoundation.WorkItemTracking.Client提交,tfs,git-commit,tfs-workitem,workitem,tfs-aggregator,Tfs,Git Commit,Tfs Workitem,Workitem,Tfs Aggregator,我正在使用TFS 2017更新1内部部署。我在提交的日志注释中使用#ID,以便将工作项ID(用户故事、任务等)与源代码的GIT提交关联起来。它可以正常工作(我可以从workitem界面看到提交的链接),但我希望将TFS SDK API与TFS aggregator一起使用,以便更好地管理GIT提交(例如,使用自定义字段的仪表板)。如何从Microsoft.TeamFoundation.WorkItemTracking.Client访问git提交?git提交链接到“ExternalLink”类型的

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

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);

        }

    }
WorkItemStore wis=ttpc.GetService();
int workitemid=1;
工作项wi=wis.GetWorkItem(工作项ID);
foreach(wi.Links中的链接w)
{
if(w.GetType().ToString()=“Microsoft.TeamFoundation.WorkItemTracking.Client.ExternalLink”)
{
外部墨水el=(外部墨水)w;
控制台写入线(el.LinkedArtifactUri);
}
}
LinkedArtifactUri将包含git提交的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();
GitHttpClient ght=ttpc.GetClient();
GitCommit gc=ght.GetCommitAsync(“CommitID”,“RepoID”,99);
Console.WriteLine(gc.Committer.Date);
Console.WriteLine(gc.Committer.Name);
foreach(gc.Changes中的GitChange gch)
{
控制台写入线(gch.Item.Path);
}
Console.ReadLine();

是否有办法通过编程方式获取git提交的作者、日期、文件名等?@user3676571是的,一旦获得提交id和repo id,就可以使用Microsoft.TeamFoundation.SourceControl.WebApi中的GetCommitAsync方法来获取提交信息。有关详细信息,请参阅我的更新答案。从workitem的历史记录中,我有以下值作为外部链接vstfs:///Git/Commit/d0331cb9-1de2-462d-b712-ca84c797a71b%2fae6aee68-64ec-4c89-b3a2-36fcf26d41eb%2f219ea05aeb2cd116e1174f7e0c55cba06d750789。在同一工作项的web界面中,当我单击“提交链接”时,我在相应的链接中打开了浏览器的新页面:如何通过编程从第一个链接获得第二个链接?