Azure Repos REST API 获取合并请求中已更改文件的列表
Azure Repos REST API to get list of changed files in merge request
目标:每当拉取请求获得批准并且审阅者在 Azure 存储库中完成(合并)拉取请求时,我想确定该合并请求中的文件列表。基于文件扩展名,我必须触发相应的构建管道。
问题: 到目前为止,从 azure devOps 门户似乎不可能,我需要 REST API 才能这样做。请指向 API/APIs 帮助我确定合并请求中已更改文件的列表
分析:我也看到了Get Merge Requests但不确定从哪里获取管道中的mergeOperationId。
作为解决方法,您可以找到已完成的 PR 并检查它们的提交。 .NET client libraries for Azure DevOps Services .
的 GitHttpClient 示例
private static void ViewPullRequests(string TeamProjectName, string GitRepo, bool ClosedPRs = false, string TargetRef = "")
{
if (ClosedPRs && TargetRef == "")
{
Console.WriteLine("Define a target branch reference");
return;
}
var pullRequests = (ClosedPRs)?
GitClient.GetPullRequestsAsync(TeamProjectName, GitRepo, new GitPullRequestSearchCriteria { Status = PullRequestStatus.Completed, TargetRefName = TargetRef }, top: 10).Result :
GitClient.GetPullRequestsAsync(TeamProjectName, GitRepo, null ).Result;
foreach (var pullRequest in pullRequests)
{
var commits = GitClient.GetPullRequestCommitsAsync(TeamProjectName, GitRepo, pullRequest.PullRequestId).Result;
foreach (var commit in commits)
{
Console.WriteLine("{0} {1}", commit.CommitId.Substring(0, 8), commit.Comment);
GitCommitChanges changes = GitClient.GetChangesAsync(TeamProjectName, commit.CommitId, GitRepo).Result;
foreach(var change in changes.Changes)
Console.WriteLine("{0}: {1}", change.ChangeType, change.Item.Path);
}
}
}
休息Api方法:
您可以从 UI 页面获取合并请求中已更改文件的列表。
如果想通过restapi获取修改过的文件列表,那么需要使用Shamrai Aleksander.[=17=提供的方法]
首先你需要使用 Pull Request Commits rest api 来获取 pull request Commits。
GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullRequests/{pullRequestId}/commits?api-version=5.1
然后根据Commits-Get Changesrestapi读取path
参数获取变化文件,循环获取变化文件列表
GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}/changes?api-version=5.1
目标:每当拉取请求获得批准并且审阅者在 Azure 存储库中完成(合并)拉取请求时,我想确定该合并请求中的文件列表。基于文件扩展名,我必须触发相应的构建管道。
问题: 到目前为止,从 azure devOps 门户似乎不可能,我需要 REST API 才能这样做。请指向 API/APIs 帮助我确定合并请求中已更改文件的列表
分析:我也看到了Get Merge Requests但不确定从哪里获取管道中的mergeOperationId。
作为解决方法,您可以找到已完成的 PR 并检查它们的提交。 .NET client libraries for Azure DevOps Services .
的 GitHttpClient 示例private static void ViewPullRequests(string TeamProjectName, string GitRepo, bool ClosedPRs = false, string TargetRef = "")
{
if (ClosedPRs && TargetRef == "")
{
Console.WriteLine("Define a target branch reference");
return;
}
var pullRequests = (ClosedPRs)?
GitClient.GetPullRequestsAsync(TeamProjectName, GitRepo, new GitPullRequestSearchCriteria { Status = PullRequestStatus.Completed, TargetRefName = TargetRef }, top: 10).Result :
GitClient.GetPullRequestsAsync(TeamProjectName, GitRepo, null ).Result;
foreach (var pullRequest in pullRequests)
{
var commits = GitClient.GetPullRequestCommitsAsync(TeamProjectName, GitRepo, pullRequest.PullRequestId).Result;
foreach (var commit in commits)
{
Console.WriteLine("{0} {1}", commit.CommitId.Substring(0, 8), commit.Comment);
GitCommitChanges changes = GitClient.GetChangesAsync(TeamProjectName, commit.CommitId, GitRepo).Result;
foreach(var change in changes.Changes)
Console.WriteLine("{0}: {1}", change.ChangeType, change.Item.Path);
}
}
}
休息Api方法:
您可以从 UI 页面获取合并请求中已更改文件的列表。
如果想通过restapi获取修改过的文件列表,那么需要使用Shamrai Aleksander.[=17=提供的方法]
首先你需要使用 Pull Request Commits rest api 来获取 pull request Commits。
GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullRequests/{pullRequestId}/commits?api-version=5.1
然后根据Commits-Get Changesrestapi读取path
参数获取变化文件,循环获取变化文件列表
GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}/changes?api-version=5.1