在预提交挂钩上检测文件模式更改

时间:2019-03-14 16:19:36

标签: git githooks

我想知道是否有人在某些脚本上更改了文件模式,并显示警告以确保它是有意的,而不是一个愚蠢的错误。

当前,我尝试在预提交钩子上执行以下操作:

mode_changed=$(git diff --summary | grep "mode")
#echo "mode change is $mode_changed"
if ! [[ -z "$mode_changed" ]]; then
  echo "Warning Files Modes Changed"
fi

如果没有暂存文件,则此方法有效,但是一旦我调用git commit -a,则先前的脚本不再起作用,变量mode_changed中的返回值始终为空。还有另一种方法吗?

1 个答案:

答案 0 :(得分:2)

要查看分阶段的差异,请使用

git diff --summary --staged

(或--cached,它是--staged的同义词)。

您还可以稍微简化一下条件:

if [ -n "$mode_changed" ]; then