2013-05-17 60 views
2

我很樂意使用Git。今天,我開始使用jQuery插件創建一個jQuery插件,用JSON提要填充HTML元素,並使用CoffeeScript構建它。Git Hook - 預提交 - 問題 - 在執行後不執行

因此,我需要一段時間編譯輸出。目前我運行一組命令,但是它的繪畫始終都是這樣調用的。

由於我經常提交,我認爲將編譯步驟掛接到預先提交會很好。這個想法是,編譯腳本,縮小它,運行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後繼續,我應該使用一些事別的?

在此先感謝...週末愉快!

+0

這可能比使用'make'做得更好,而不是預先提交的鉤子。 – twalberg

回答

3

exec命令在那裏用新進程取代了當前進程。所以你的腳本的其餘部分將永遠不會運行。只需放下exec,它就會運行「咖啡」並等待它終止,然後繼續下一個命令。在鉤子腳本中,如果當前成功執行下一個命令是一個好主意。所以更像下面的東西可能會更好。

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

與邏輯運算符鏈接命令的這種方式意味着該腳本將與差錯,而不是繼續在以後運行命令的命令的故障代碼退出。