Git Hook - pre commit - 问题 - 在exec之后不执行

时间:2013-05-17 08:08:10

标签: git shell

我很开心玩Git。今天我开始使用JSON插件来填充带有JSON feed的HTML元素,并使用CoffeeScript构建它。

因此我需要偶尔编译一次输出。目前我运行一组命令,但它一直是一个颜色来调用它。

由于我经常提交,我认为将编译步骤挂钩到预提交是很好的。我的想法是,编译脚本,缩小它,运行git add .并最终提交它。

所以我在.git/hooks/pre-commit文件中提出了类似这样的事情。

echo "Compiling cofee scripts..."
exec coffee --compile --output ./dist/ ./src/
echo "DONE..."

echo "Minifying JavaScripts..."
exec minify dist/jquery.jsonPopulate.js dist/jquery.jsonPopulate.min.js
echo "DONE..."
echo ""

echo "Adding files to Git..."
exec git add .
echo "Done..."
echo ""

echo ""

exit 1

运行git add .后跟git commit和一些消息......

我明白了......

Compiling coffee scripts...

exec之后看起来没有继续,我应该使用其他东西吗?

提前致谢...周末愉快!

1 个答案:

答案 0 :(得分:3)

exec命令用新进程替换了当前进程。所以你的脚本的其余部分永远不会运行。只需删除exec,它将运行'coffee'并等待它终止然后继续执行下一个命令。在钩子脚本中,如果当前的命令成功,则只做下一个命令是个好主意。所以更像以下的东西可能会更好。

echo "Compiling cofee scripts..." &&
coffee --compile --output ./dist/ ./src/ && 
echo "Minifying JavaScripts..." &&
minify dist/jquery.jsonPopulate.js dist/jquery.jsonPopulate.min.js

这种使用逻辑AND运算符链接命令的方式意味着脚本将使用错误命令的失败代码退出,而不是继续运行以后的命令。