背景
在我的项目中,bitbucket 上的 pull 请求由 Jenkins 构建验证。构建和测试大约需要 50 分钟。这非常有效。
问题
有一些更改不会影响工作代码(前端相关)。因此,如果 pull 请求仅涉及两个子目录之一,则没有必要进行构建和运行测试。目的是节省时间(更少的时间来发布较小的无害更改)和资源(不要占用构建机器进行无用的工作)。
我不想拆分项目(可能的解决方案之一),因为前端的更改通常需要更改实际的后端代码,因此在这种情况下需要进行测试。
可能的解决方案
我找到了阻止 Jenkins 构建的方法,并在第一步成功获取新代码。
问题是如何询问 git 分支(更改)是否只涉及两个子目录。这可能需要这样的东西:
git diff master...featureBranch <some other options>
可能的替代方案
或者也许还有其他方法来解决这个问题?使用 bitbucket
或 Jenkins
的某些功能?
最佳答案
实现您想要的效果的最简单方法可能是使用 git log
或 git diff
,因为两者都可以采用转速范围和路径:
git log [<options>] [<revision range>] [[--] <path>…]
git diff [<options>] <commit> <commit> [--] [<path>…]
例如,要测试最新提交是否涉及目录1和/或目录2,您可以使用:
git log --oneline HEAD^..HEAD directory1 directory2
对于否定匹配,排除路径规范应该可以解决问题:
git log --oneline HEAD^..HEAD -- '.' ':(exclude)./directory1'
或者类似地使用 diff:
git diff HEAD^..HEAD '.' ':(exclude)directory'
关于git - 检测 git 分支仅触及特定路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58233543/