git 的访问消息如何从 Microsoft.TeamFoundation.WorkItemTracking.Client 提交?

How access message of git commits from Microsoft.TeamFoundation.WorkItemTracking.Client?

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

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

如何访问 git 中的 git 从 Microsoft.TeamFoundation.WorkItemTracking.Client 提交,以便除了 here 描述的消息之外还能够解析自定义消息(例如 "Fixes #123" 或 "Close #123")?

你不能只用WorkItemHttpClient得到commit comment,你可以用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 不支持它。