2

我开始享受 Git 的乐趣。今天我开始了一个 jQuery 插件,用 JSON 提要填充 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,我应该用别的东西吗?

在此先感谢...祝您周末愉快!

4

1 回答 1

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 运算符链接命令的方式意味着脚本将退出并显示错误命令的失败代码,并且不会继续运行以后的命令。

于 2013-05-17T11:21:43.910 回答