以编程方式完成TFS Pull Request

时间:2017-11-16 21:12:06

标签: tfs azure-devops tfs-sdk tfs2017 azure-devops-rest-api

使用 Microsoft.TeamFoundationServer.Client(15.112.1)连接到 TFS 2017 Update 2 服务器,我们可以获得有关现有PR的详细信息:< / p>

var connection = new VssConnection(collectionUri, credentials);
var client = connection.GetClient<GitHttpClient>();
var pr = await client.GetPullRequestByIdAsync(pullRequestId);

另外,我们可以像这样创建新的PR:

var pr = await client.CreatePullRequestAsync(
        new GitPullRequest
        {
          SourceRefName = "master",
          TargetRefName = "develop",
          Title = "[Automatic Merge]"
        },
        projectName, repositoryName);

另外,我们可以这样投票给PR:

var pr = await client.CreatePullRequestReviewerAsync(
            reviewer, projectName, repositoryName, pullRequestId, authorizedIdenity.Id.ToString());
  

有没有办法完成PR(覆盖或不存在分支   策略)并继续合并操作?

1 个答案:

答案 0 :(得分:2)

GitHttpClient有一个 UpdatePullRequestAsync 方法。

要完成提取请求,您需要更新提取请求的状态属性。并使用 UpdatePullRequestAsync 方法完成您的PR。

请确保设置CompletionOptions属性以指定是否合并提交,删除源分支等。

所以你的代码看起来像是

pr.Status = PullRequestStatus.Completed
pr.CompletionOption = new GitPullRequestCompletionOption() { SquashMerge = true };
client.UpdatePullRequest(pr, repositoryId, pullRequestId);

修改

ByPassPolicy尚不适用于已发布的Microsoft.TeamFoundationServer.ExtendedClient版本。

但是,如果您安装库 Microsoft.TeamFoundationServer.ExtendedClient 的预发行版NuGet包 v15.122.1-preview ,您将看到选项ByPassPolicy作为属性在GitPullrequestCompletionOptions类中。您可以通过传递策略将其设置为true。