git - 如何通过多次提交检查/列出 PR 中更改的所有文件
问题描述
我想检查可能有多个提交的 PR 中更改的文件。我已经看到了有关如何查看两次提交之间更改的文件的多个答案,但这不是我的用例。我的仓库中有一个名为“test-proxy”的文件夹。仅当测试代理文件夹发生更改时,我才会触发管道中的测试代理部署阶段。说,我开了个PR
提交 1 - test-proxy 文件夹中没有更改 -> test-proxy 部署阶段未触发(预期)
提交 2 - test-proxy 文件夹中的更改 -> test-proxy 部署阶段触发器(预期)
提交 3 - test-proxy 文件夹中没有更改 -> test-proxy 部署阶段未触发 - (不是预期的)!
这并不理想,因为测试代理测试用例可能在提交 2 中失败,如果该阶段不再运行,这将被忽略。我们不能让开发人员自行决定以确保该阶段通过。它应该由管道处理。现在为了运行这个 PR 的 test-proxy 部署阶段,开发人员必须对文件夹进行虚拟提交。
请帮助解决上述问题。
我已经尝试了在其他测试答案中找到的大多数 git 命令。这两个是我在管道中的,即使它们没有给出确切的结果 -
git diff-tree --name-only HEAD^ HEAD | grep 测试代理
git show --no-commit-id --name-only -r $(git log --pretty=format:'%h' -n 1) | grep 测试代理
预期的 -
当 PR 中的任何提交对 test-proxy 文件夹进行更改时,应该始终触发 test-proxy 部署阶段。
解决方案
您想检测 PR 的尖端与 PR 从当前分支分支的点之间的任何差异(调用它master
):
git diff-tree --name-only $(git merge-base master HEAD) HEAD -- test-proxy
如果您只是对是否有更改感兴趣,请输入--quiet
和--exit-code
:
git diff-tree --quiet --exit-code $(git merge-base master HEAD) HEAD -- test-proxy
请注意,如果.test-proxy
推荐阅读
- windows - Windows 终端:从 .exe 和 .nsi 创建 .exe 安装程序
- multithreading - 如何用等待功能替换 OMP BARRIER?
- c - 在 mingw 中使用 printf 打印 long double 时输出错误
- python-3.x - 来自 html 页面的通用日期解析器
- javascript - 因为我是 ReactJs 的新手,所以不要面对它的错误并得到这个错误
- docker - 运行 OpenTelemetry Collector 时获取“与 Jaeger Collector 后端的连接状态..”(jaeger/TRANSIENT_FAILURE)
- excel - 从列中计算每个单元格中的数字(单元格中的单个数字或用逗号分隔)
- android - Android 8 - 保持接收者注册
- python - 如何使用经过身份验证的用户在 Django 的 Test.py 中发出 POST 请求?(需要令牌认证?)
- symfony - symfony 表单处理子控制器