Python - azure.devops - 获取拉取请求的分支/提交记录
我正在使用azure.devops的Python库一个一个地解析拉取请求(PR)。
对于每个PR,我需要获取相关的分支和提交记录。
有没有办法做到这一点呢?
repositories = git_client.get_repositories(project=None, include_links=None, include_all_urls=None, include_hidden=None)
for repo in repositories:
if repo.remote_url == repo_url:
pull_requests = git_client.get_pull_requests(repository_id=repo.id,search_criteria=GitPullRequestSearchCriteria(status='completed'))
for pr in pull_requests:
print(f'Pull Request #{pr.pull_request_id}: {pr.title}')
我查看了文档,但找不到相关的信息。
谢谢你的帮助!
1 个回答
0
你需要通过命令 pip install azure-devops
来安装 azure-devops 这个包。
然后可以用 Python 脚本来获取你需要的信息。下面是我的 Python 脚本:
from azure.devops.connection import Connection
from msrest.authentication import BasicAuthentication
from azure.devops.v7_0.git.git_client import GitClient
from azure.devops.v7_0.git.models import GitPullRequestSearchCriteria
# Replace with your Azure DevOps organization URL and PAT
organization_url = "https://dev.azure.com/{orgname}"
personal_access_token = "PAT"
# Create a connection
credentials = BasicAuthentication("", personal_access_token)
connection = Connection(base_url=organization_url, creds=credentials)
# Get the Git client
git_client = connection.clients.get_git_client()
# Replace with your repository URL
repo_url = "https://{orgname}@dev.azure.com/{orgname}/{projectname}/_git/{reponame}"
# Get all repositories
repositories = git_client.get_repositories(project=None, include_links=None, include_all_urls=None, include_hidden=None)
for repo in repositories:
print(f"testreporemoteurl .......{repo.remote_url}") # used to check the remote url.
for repo in repositories:
if repo.remote_url == repo_url:
pull_requests = git_client.get_pull_requests(repository_id=repo.id, search_criteria=GitPullRequestSearchCriteria(status='Completed'))
for pr in pull_requests:
print(f"Pull Request #{pr.pull_request_id}: {pr.title}")
print(f"Source Branch: {pr.source_ref_name}")
print(f"Target Branch: {pr.target_ref_name}")
print(f" - {pr}") # check the whole PR content
print("Commits:")
print(f" - {pr.last_merge_source_commit.commit_id}") # get the last merget source commit id
print("\n")
请把 orgname
、pat
、projectname
和 reponame
替换成你自己的信息。
输出的内容如下。我输出了 PR 的 ID、标题、源分支和目标分支。我还输出了整个 {pr} 的内容。对于提交(commits),没有任何内容。所以,我输出了最后一次合并的源提交 ID。你可以解析 {pr} 的内容来获取你需要的信息。