git - 在预提交挂钩上检测文件模式更改
问题描述
我想知道是否有人更改了某些脚本的文件模式并显示警告以确保它是故意的,而不是一个愚蠢的错误。
目前我尝试在我的预提交钩子上做这样的事情:
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 中的返回值始终为空。还有另一种方法吗?
解决方案
要查看阶段性差异,请使用
git diff --summary --staged
(或--cached
,这是 的同义词--staged
)。
您还可以稍微简化您的条件:
if [ -n "$mode_changed" ]; then
推荐阅读
- apache-kafka - min insync replicas 属性是否会影响 kafka 中的消费者
- html - 在包装上重置边距?
- wordpress - Gatsby GraphQL + WordPress 中不存在字段(但在本地工作)
- autolayout - 布局锚中 Swift 中常量的值类型
- laravel - 单击时在注册表中提交问题没有任何反应
- ruby-on-rails - Rails builds invalid sql query for has many association
- javascript - How to sync a local folder with gulp, with update for deleted files and folders?
- c++ - “LRESULT CALLBACK WinProc”和“LRESULT WINAPI WinProc”之间的区别
- aws-api-gateway - REGIONAL 处于活动状态时无法导入 EDGE 的证书
- php - Facing a issue in populating the status using ajax