【发布时间】:2019-07-15 11:53:26
【问题描述】:
我想查看最新的提交并确定是否对以下文件或文件名中的文件进行了任何更改。分别是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 中放置一个或条件,例如git show --name-only "apiproxy" || "edge.json"?
【问题讨论】:
-
您需要一个简单的:
git show ... -- file1 file2 ...根本不需要grep。只需在命令行中列出所有文件。 -
你能详细说明一下吗?如果我这样做
git show --name--only HEAD -- "apiproxy" "edge.json"我会得到无法识别的论点。应该是git show --name--only HEAD | "apiproxy" "edge.json" -
所以应该是 git show "filename1" "filename2"
-
当然应该是
--name-only。注意中间的一个破折号。git show --name-only HEAD -- edge.json apiproxy