首页 > 解决方案 > 如何从 Microsoft.TeamFoundation.WorkItemTracking.Client 访问 git 提交的消息?

问题描述

我在本地使用 TFS 2017 更新 1。我在提交的日志注释中使用#ID,以便将工作项 ID(用户故事、任务等)与源代码的 GIT 提交相关联。它可以正常工作(我可以看到从工作项界面提交的链接)。

我想将 TFS SDK API 与 tfs 聚合器一起使用,以便更好地管理 GIT 提交(例如,当程序员完成特定的自定义 git 提交消息时,自动转换到工作项的自定义状态)。

如何访问 git 提交的消息/日志,Microsoft.TeamFoundation.WorkItemTracking.Client以便能够解析除了此处描述的自定义消息(例如“修复 #123”或“关闭 #123”)?

标签: tfsazure-devops-rest-apitfs-workitemtfs-sdktfs-aggregator

解决方案


你不能只用 获得提交评论WorkItemHttpClient,你可以用GitHttpClient. 首先使用 获取工作项链接WorkItemHttpClient,然后获取提交 ID 并使用 获取评论GitHttpClient

一个工作示例:

VssClientCredentials cred = new VssClientCredentials();
VssConnection tfs = new VssConnection(new Uri("http://tfs-server:8080/tfs/collection"), cred);
var workItemClient = tfs.GetClient<WorkItemTrackingHttpClient>();
var gitClient = tfs.GetClient<GitHttpClient>();
int workItemId = 1213;

var workItem = workItemClient.GetWorkItemAsync("Project-Name", workItemId, expand: WorkItemExpand.Relations).Result;
// We need to retrieve the commit id from the links, debug the following line to understand what I did
var commitId = wit.Relations.Where(r => r.Url.Contains("Git")).FirstOrDefault().Url.Split('%')[2].Remove(0,2);
var commit = gitClient.GetCommitAsync("Project-Name", commitId, "Repo-Name").Result;
string comment = commit.comment;

顺便说一句,您不能使用该Fixes #123语法,因为 TFS 2017 不支持。


推荐阅读