虽然git show--name--仅在grep语句中提供多个文件名

时间:2019-07-15 11:53:26

标签: git groovy grep

我想查看最新的提交,并确定是否对以下文件或文件名中的文件进行了任何更改。分别是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"

2 个答案:

答案 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语句无济于事,因为它(显然)会在条件中任何匹配项的第一次遇到时停止,而我想查找所有匹配项。