【发布时间】:2016-09-13 14:41:09
【问题描述】:
下面是我的预提交 git hook
#!/bin/bash
....
# if git diff -U0 "$FILE_PATH" | grep -iq 'todo'; # Double quoting $FILE_PATH doesnt' change anything
if git diff -U0 $FILE_PATH | grep -iq 'todo';
then
echo $FILE_PATH ' -> Contains TODO'
exit 1
else
echo 'nooooooooooooooooooooooooooooooooooo'
fi
我总是收到noooooooooooooooooooo 消息,但是下面的命令直接在我的终端上尝试过,效果很好:
git diff -U0 my/file/path.php | grep -iq 'todo' && echo 'true' || echo 'false'
输出
true
更新
当运行bash .git/hooks/pre-commit时,它可以工作,很奇怪!
仅供参考
我不知道这是否是重要信息,但 .git/hooks/pre-commit 是一个符号链接
【问题讨论】:
-
双引号
$FILE_PATH再试一次... -
@Jahid 不会改变结果,从我的终端尝试时我总是得到
true -
您如何运行脚本以及与谁一起运行?
git diff -U0 $FILE_PATH | grep -i 'todo'在脚本中单独运行时会返回什么?git diff -U0 $FILE_PATH怎么样? -
@123 实际上非常有趣,当运行脚本
bash my_script时它可以工作。但是运行时不起作用git commit -
$FILE_PATH是绝对的吗?