"related" 如何在 VSTS 中确定拉取请求的工作项?

How are "related" work items for pull requests determined in VSTS?

我最近发现,在查看哪些工作项与不同的部署相关联时,可以使用 link 编辑到拉取请求的工作项。也就是说,我想确保相关工作项目是准确的。我 可以 link 手动处理我的工作项目,但在某些情况下,在单个压缩合并提交中可能会有 50 个不同的提交。必须手动输入很多不同的提交。

我看到 VSTS (Azure Devops) 试图自动添加一些相关的工作项。 问题是我现在不知道这些工作项是如何计算的。 如下图所示,即使未检测到代码更改,您也可以拥有关联的工作项.有人可以对此有所了解吗?根据 Fiddler 的说法,VSTS api 中要求的 API 是:

// POST https://foobar.visualstudio.com/16e07dde-f652-4a64-93f1-3edb3d70d5e1/_apis/git/repositories/c9bd207c-bc6e-4e6c-aba9-8fd6aeb53946/commitsBatch 

{"$top":101,"itemVersion":{"versionOptions":0,"versionType":0,"version":"master"},"compareVersion":{"versionOptions":0,"versionType":0,"version":"users/v-username/140357_TestBranchForFeatureDeployment_ButWithLinks"}}

当您创建 Pull Request 时,例如从 devmaster,它会首先检测这两个分支之间不同的提交。就是你从 Fiddler trace 看到的commitsbatchapi

对于拉取请求中列出的work items,它是与提交关联的那个。检测提交时,还会检测并列出关联的工作项。这些是您在上面分享的屏幕截图中看到的。


我想你最关心和困惑的应该是为什么它显示 100 commits 但在这个 pull request 中仍然说 No file changes .

据我所知,这似乎是 Azure devops PR 的已知限制。请参阅之前向我们报告的 thread

For example take the following branches and commits:

feature/task-1:

commit e48b5a97d33abf733df656ebc2bf81cedccf7815

feature/task-2:

commit e48b5a97d33abf733df656ebc2bf81cedccf7815

commit 6a6c2db2c71a584bd07632c7387b7bee3fb32eea

If feature/task-1 and feature/task-2 are both Pull-Requested to develop, after feature/task-1 is merged, the pull request for feature/task-2 will still show changes from commits e48b5a97d33abf733df656ebc2bf81cedccf7815 and 6a6c2db2c71a584bd07632c7387b7bee3fb32eea even though e48b5a97d33abf733df656ebc2bf81cedccf7815 has already been merged into develop.

有了这个限制,提交仍然会被检测到,但是由于文件更改之前已经被其他分支合并,所以它会说没有文件更改。此外,还会显示与提交关联的工作项。

检查一下,确认是不是你面对的。如果是,请尝试围绕我们的工程师提到的工作 here

或者你可以在那个论坛上提新票,让对应的产品群关注一下。