我想检查PR中可能有多个提交的更改文件。我已经看到了多个答案,如何查看两次提交之间的文件更改,但这不是我的用例。 我的仓库中有一个名为“ test-proxy”的文件夹。仅当对test-proxy文件夹进行更改时,我才在管道中触发test-proxy部署阶段。 说,我打开公关
提交1-test-proxy文件夹中没有更改-> test-proxy部署阶段未触发(预期)
提交2-测试代理文件夹中的更改->测试代理部署阶段触发器(预期)
提交3-test-proxy文件夹中没有更改-> test-proxy部署阶段不会触发-(不期望)!
这是不理想的,因为test-proxy测试用例可能在提交2中失败,如果阶段不再次运行,它将被忽略。我们不能将其留给开发人员来确保该阶段通过。它应该由管道处理。 现在,为了运行此PR的test-proxy部署阶段,开发人员将不得不对文件夹进行虚拟提交。
请帮助解决以上问题。
我已经尝试了在其他答案中找到的大多数git命令进行测试。这两个是我在管道中使用的,即使它们没有给出确切的结果-
git diff-tree --name-only HEAD ^ HEAD | grep test-proxy
git show--无提交ID-仅名称-r $(git log --pretty = format:'%h'-n 1)| grep test-proxy
预期-
当PR中的任何提交对test-proxy文件夹进行更改时,
答案 0 :(得分:2)
您要检测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
中没有没有更改,这将报告成功。