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

Detect file mode changes on pre-commit hook

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

目前我尝试在我的预提交挂钩上做这样的事情:

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,则先前的脚本不再有效,变量 return 中的值 mode_changed 总是空的。还有其他方法吗?

要查看阶段性差异,请使用

git diff --summary --staged

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

你也可以稍微简化一下你的条件:

if [ -n "$mode_changed" ]; then