2011-09-16 103 views
2

我有一个回应,我正在处理那个没有任何其他钩子。如今,具有的console.log起床到dev多次的尴尬之后,我把下面的pre-commit钩子:为什么Git提交-a(和git add,然后git commit)不会触发可执行文件pre-commit hook

#!/bin/sh 

count=`git diff | grep -i 'console\.' | wc -l | awk '{print $1}'` 
if [[ "$count" -ge 1 ]]; then 
echo " remove any console statements in javascript sources" 
    exit 1 
fi 

本身的脚本工作正常,只要Git会调用它我使用'git commit filename'。如果我通过'git add'添加文件,或者如果我'git commit -a'(我假设只是添加了所有修改后的文件,然后运行提交),它不会触发。这是为什么发生?我不是git master,我在Google上做了一些狩猎,但没有提出任何具体的东西。

回答

1

每次在您的仓库中进行提交时,预提交钩子将被触发/执行。它与您的文件如何添加到索引无关。我认为你在解雇和剧本之间做你想做的事。添加外部条件的echo以查看脚本是否始终被触发。

我还没有试过,你已经张贴了剧本,但我相信这个问题可能在git diff - 它应该是git diff --cached

更新:

我已经证实,你必须使用--cached

+0

就是这样。也许我刚刚在早上开始编程太早;) – Stephen

相关问题