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

Posted

技术标签:

【中文标题】如何从 Microsoft.TeamFoundation.WorkItemTracking.Client 访问 git 提交的消息?【英文标题】:How access message of git commits from Microsoft.TeamFoundation.WorkItemTracking.Client? 【发布时间】:2020-03-10 05:08:31 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

你不能只用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 不支持。

【讨论】:

以上是关于如何从 Microsoft.TeamFoundation.WorkItemTracking.Client 访问 git 提交的消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从回收器适配器发送到片段 |如何从 recyclerview 适配器调用片段函数

如何从 Firebase 获取所有设备令牌?

如何直接从类调用从接口继承的方法?

如何从服务器获取和设置 android 中的 API(从服务器获取 int 值)?如何绑定和实现这个

如何从Mac从android studio中的fabric注销? [复制]

如何从设备中获取 PDF 文件以便能够从我的应用程序中上传?