我想查看最新的提交,并确定是否对以下文件或文件名中的文件进行了任何更改。分别是apiproxy(文件夹)或edge.json(文件名)
我正在运行以下代码( steps.sh是公司使用的某些库特定的东西。它只是一个shell命令):
if((steps.sh ('git show --name-only HEAD | grep "apiproxy"')) || (steps.sh ('git show --name-only HEAD | grep "edge.json"'))){
echo "latest commit was a change to either edge.json or apiproxy"
}
当执行以上操作而仅进行最新更改以符合第一个条件时,第二个条件将失败。在我看来,||
之间应该防止这种情况的发生。
这是我要解决的第一个问题。评估两个条件,当其中一个条件失败时,不要退出代码为1。
第二,如果可能的话,我想将||
条件放在单个grep命令中。我已经尝试了以下方法,但无济于事:
git show --name-only HEAD | grep "edge.json | apiproxy"
有指针吗?
更新:
因此,在0andriy的帮助下,我发现我想使用git show --name-only "filename1" "filename2"
现在我剩下的问题是:如何在git show
中放置or条件,例如git show --name-only "apiproxy" || "edge.json"
?
答案 0 :(得分:1)
git show HEAD --name-only --pretty="" |grep 'apiproxy\|edge.json'
已更新。限制为确切的文件名
git show HEAD --name-only --pretty="" |grep '^apiproxy$\|^edge.json$'
答案 1 :(得分:0)
尽管以上答案对指导我朝正确的方向很有帮助,但解决问题的方法如下:
git show --name-only "filename1" "filename2"
这将输出在HEAD
状态下对其进行更改的指定文件名
or语句无济于事,因为它(显然)会在条件中任何匹配项的第一次遇到时停止,而我想查找所有匹配项。