如何解决Git:如何检查 CI 运行的差异是否在 src (!src/**) 之外修改了文件
使用 git
,如何在 Circle CI 作业中知道我们正在构建的差异是否包括 src
之外的更改。
如果只对 src
进行更改,我想终止 CI。
我可以使用什么命令来检查当前 CI 中除 src
之外的其他内容是否发生了变化?
解决方法
试试:
git diff --name-only <something> HEAD | grep -v "^src/"
和其中一个
- 检查是否有一些行,
- 或检查最终返回码(成功 =
src/
之外有一些更改,失败 =src/
之外没有更改)
要将当前提交与其从 master 分叉的点进行比较,请使用:
git diff --name-only master...HEAD # 3 dots
[更新]
一个注意事项:git diff master...HEAD
意味着您在本地克隆上拥有所有 repo 的历史记录(或至少:在您当前的分支和 master
分支中有足够多的提交以到达分支点这些分支)。
如果您在 CI 作业中激活了一些“稀疏结帐”或“浅克隆”选项,则在您的 CI 服务器上不会出现这种情况,这些选项明确地仅在本地获取最后一次提交。
您可以明确地“深化”分支的历史记录:
git fetch --deepen=1000 origin master
git fetch --deepen=1000 origin [active branch]
如果您不在本地查看 master
,您可能不得不与 origin/master
进行比较:
git diff --name-only origin/master...HEAD
如果您有浅层克隆问题,您可能还想查看您的 git 服务器的 API。
例如:使用github的API,如果你有pull request的标识符,你可以使用Pulls : list files来获取那个pull request修改的文件列表。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。