如何通过多次提交检查/列出PR中所有更改的文件

时间:2019-04-11 10:08:22

标签: git pull-request jenkins-groovy

我想检查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命令进行测试。这两个是我在管道中使用的,即使它们没有给出确切的结果-

  1. git diff-tree --name-only HEAD ^ HEAD | grep test-proxy

  2. git show--无提交ID-仅名称-r $(git log --pretty = format:'%h'-n 1)| grep test-proxy

预期-

当PR中的任何提交对test-proxy文件夹进行更改时, proxy部署阶段应始终触发。

1 个答案:

答案 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中没有没有更改,这将报告成功。