在git预提交钩子中聚合和丑化javascript

在git预提交钩子中聚合和丑化javascript,git,continuous-integration,githooks,uglifyjs,Git,Continuous Integration,Githooks,Uglifyjs,我正在使用ready.js将js文件聚合成一个all.js文件(没有Google的闭包编译器),然后使用uglify js缩小和模糊代码。我想在预提交钩子中完成所有这些 然而,我认为我做错了什么 我的.git/hooks/pre-commit文件如下所示: #!/bin/sh readyjs ~/Sites/backbone/js/javascripts/ ~/Sites/backbone/js/ --nojslint -o "underscore.js, backbone.js" --noco

我正在使用
ready.js
将js文件聚合成一个
all.js
文件(没有Google的闭包编译器),然后使用
uglify js
缩小和模糊代码。我想在预提交钩子中完成所有这些

然而,我认为我做错了什么

我的
.git/hooks/pre-commit
文件如下所示:

#!/bin/sh
readyjs ~/Sites/backbone/js/javascripts/ ~/Sites/backbone/js/ --nojslint -o "underscore.js, backbone.js" --nocompiler
uglifyjs -nm -o ~/Sites/backbone/js/all.min.js ~/Sites/backbone/js/all.js
# Commit
exit

我不应该在这里使用简单Bash吗?我还有什么地方做错了吗?这一步似乎被完全跳过了。

我的灵力表明你的脚本不可执行;试着做

chmod +x .git/hooks/pre-commit

那会是git不知道在哪里可以找到这些命令吗?尝试指定这些二进制文件的完整路径,而不仅仅是说明命令本身。@favoretti这主意不错,但仍然不起作用。我用
/usr/bin/readyjs
测试了它们,它在命令行上运行得很好,但在钩子中失败了。完全正确。现在,如果你的灵能告诉我,为什么在执行
git commit
时,钩子在默认情况下不可执行。好吧,因为你自己创建了该文件,并且新文件是使用挂载的文件系统文件模式创建掩码(umask)指定的权限创建的不应使用可执行标志创建新文件,因为大多数文件不是:)