问题描述
我想根据批准请求并将其合并到目标分支后更改的文件来控制位桶管道中发生的情况。我遇到的问题是,位桶在运行管道之前提交。因此,当管道启动时,所有提交都在当前分支上。因此,我不知道如何知道自上次运行管道以来哪些文件已更改?
我认为git show HEAD^1
无效,因为可能会有数十次提交。我不知道如何在合并合并请求之前的最新提交与刚刚合并为合并请求的一部分的最新提交之间做git diff。
是否有一种方法可以知道使用git命令将哪些文件作为请求的一部分进行了更改?本质上,当您查看拉取请求时,与Bitbucket显示给您的信息相同,我如何获得该文件列表?
解决方法
找到了使用Bitbucket API和端点(记录在here中)的解决方案
使用bitbucket提交,可以对此端点进行GET调用:
https://api.bitbucket.org/2.0/repositories/{workspace}/{repo_slug}/diffstat/{commit}
在位桶流水线中运行此命令时,所有三个变量与位桶默认变量(列在here中)一起可用
使用python请求库,按通常的方式发出get请求:
headers = {'Content-Type': 'application/json'}
r = requests.get(url,auth=(<username>,<app_password>),headers=headers)
Bitbucket不再接受密码,因此您必须创建一个应用密码来代替您的帐户密码(说明here)
在通过有效提交对此端点进行GET(仅尝试使用短版本而不是全长SHA)时,我收到一个json,其中包含每个更改的词典列表。