我正在尝试通过TFS REST API获得与Git Commit相关的工作项。我没有在网上找到例子,但是tfs门户网站似乎通过使用'associatedWorkItems'api调用来获取这些信息......
当我导航到我的TFS门户网站以获取给定的Git Commit:
的http:// {实例} / {收集} / {项目} / _git / {库} /提交/ {的commitid}
如果我检查网络流量,我会看到一个POST呼叫:
的http:// {实例} / {收集} / {专案编号} / _api / _versioncontrol / associatedWorkItems __ V = 5
?在请求中发送这些Body Form Parameters:
此调用返回__wrappedArray集合中关联工作项的列表。
有没有办法从TFS REST API调用它?如果是这样,我在哪里可以获得版本和RequestVerificationToken参数值?
这与我之前的问题有关: Get latest Associated Work Items for Git Commit using TFS REST API
更新:我尝试@ PatrickLu-MSFT建议将'IncludeWorkItems'参数传递给GetcommitsAsync
,但仍将WorkItems返回为null:
GitQueryCommitsCriteria crit = new GitQueryCommitsCriteria();
crit.IncludeWorkItems = true;
crit.Ids = new List<string>(){"27a36707252ac9db742cc259a1018b9750d8e9a2"};
var commitTest = gitClient.GetCommitsAsync(repo.Id, crit).Result.FirstOrDefault();
//commitTest.WorkItems == null
答案 0 :(得分:2)
不幸的是,如前所述,目前还没有这种Rest API能够直接显示与GIT提交相关的工作项。
这里还有一个相关的uservoice供您参考:
Rest API - 能够显示与GIT提交相关联的工作项
您从使用的网络流量中看到的API,可能是内部方式。您也可以从API版本判断它,_v=5
5目前绝对不是已发布的Rest API版本。
作为一种解决方法,您可以尝试使用.Net Client执行类似的任务。
在GitHttpClientBase.GetCommitsAsync中指定GitQueryCommitsCriteria.IncludeWorkItems = true
会返回GitCommitRef.WorkItems
中的关联工作项。注意:IncludeWorkItems和WorkItems都有[EditorBrowsable(EditorBrowsableState.Never)],它从编辑器建议中隐藏它。
答案 1 :(得分:1)
至少在TFS 2018.2中,您实际上可以使用GetCommits来实现,尽管您应该通过ItemVersion
/ FromCommitId
设置commitIds(GitQueryCommitsCriteria.Ids
不起作用):
var wiIds = (await git
.GetCommitsAsync(
project,
repository,
new GitQueryCommitsCriteria
{
// Ids query disregards IncludeWorkItems parameter.
// ItemVersion query seems to disregard the Top parameter and returns 100 commits instead at least in TFS 2018.2.
// So we use From+To query.
FromCommitId = commitId,
ToCommitId = commitId,
IncludeWorkItems = true,
Top = 1
}))
.Single()
.WorkItems()
.Select(wiRef =>
Int32.Parse(wiRef.Id))