以编程方式将工作项关联到拉取请求

Mon*_*ton 4 git pull-request azure-devops

我可以获取(https://www.visualstudio.com/en-us/docs/integrate/api/git/pull-requests#get-a-pull-request)拉取请求,管理审阅者并完成它。该分支有一个需要工作项的策略,但它失败了,因为拉取请求不会自动添加与底层提交关联的工作项。

针对带有错误参数的拉取请求刺探 PATCH 会导致

“您只能更新审阅者、描述、标题、合并状态和状态”

我可以使用拉取请求 url + /workitems 获取工作项列表,但该集合不支持 POST、PUT 和 PATCH。

我没有找到将工作项与拉取请求关联的方法?

Edd*_*SFT 6

您可以通过更新工作项链接将工作项与拉取请求关联起来,正如 strain 提到的那样。

不确定你使用哪种代码语言,我添加了一个 C# 代码示例供你参考:

using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.SourceControl.WebApi;
using Microsoft.TeamFoundation.WorkItemTracking.WebApi;
using Microsoft.VisualStudio.Services.WebApi.Patch.Json;
using Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models;

namespace PRWIl
{
    class Program
    {
        static void Main(string[] args)
        {
            string tfsurl = "https://xxx.visualstudio.com/";
            TfsTeamProjectCollection ttpc = new TfsTeamProjectCollection(new Uri(tfsurl));
            GitHttpClient ghc = ttpc.GetClient<GitHttpClient>();
            string project = "ProjectName";
            string repoid = "repositoryid";
            int pullrequestid = 1;
            int workitemid = 1;
            GitPullRequest gpr = ghc.GetPullRequestAsync(project,repoid,pullrequestid).Result;

            WorkItemTrackingHttpClient withc = ttpc.GetClient<WorkItemTrackingHttpClient>();

            JsonPatchDocument json = new JsonPatchDocument();

            string pullrequesturl = "vstfs:///Git/PullRequestId/" + gpr.Repository.ProjectReference.Id + "%2F" + gpr.Repository.Id + "%2F" + gpr.PullRequestId;
            json.Add(new JsonPatchOperation
            {
                Operation = Microsoft.VisualStudio.Services.WebApi.Patch.Operation.Add,
                Path = "/relations/-",
                Value = new WorkItemRelation() {Rel = "ArtifactLink", Url = pullrequesturl }
            });
            WorkItem result = withc.UpdateWorkItemAsync(json,workitemid).Result;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)