2 votes

Git Hook - pre commit - Problème - Non exécution après exécution

Je commence à m'amuser avec Git. Aujourd'hui, je commence un plugin jQuery pour remplir des éléments HTML avec un flux JSON et il a été construit avec CoffeeScript.

En conséquence, j'ai besoin de compiler la sortie de temps en temps. Actuellement, j'exécute un ensemble de commandes, mais il est difficile de les appeler en permanence.

Comme je commets assez souvent, j'ai pensé qu'il serait bon d'accrocher l'étape de compilation au pré-commit. L'idée est de compiler le script, le minifier, exécuter git add . et enfin le commettre.

Donc j'ai trouvé quelque chose comme ça dans le .git/hooks/pre-commit fichier.

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

Une fois que j'ai lancé git add . suivi par git commit et un message...

Je vois...

Compiling coffee scripts...

On dirait qu'il ne continue pas après exec dois-je utiliser autre chose ?

Merci d'avance... Passez un bon week-end !

3voto

patthoyts Points 8978

Le site exec y a remplacé le processus actuel par le nouveau processus. Donc le reste de votre script ne sera jamais exécuté. Il suffit de laisser tomber l'exec et il exécutera 'coffee' et attendra qu'il se termine puis passera à la commande suivante. Dans les script à crochets, c'est une bonne idée de n'exécuter la commande suivante que si la commande actuelle a réussi. Donc quelque chose de plus comme ce qui suit pourrait être mieux.

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

Cette façon d'enchaîner les commandes avec l'opérateur logique AND signifie que le script sortira avec le code d'échec de la commande qui a erré et ne continuera pas à exécuter les commandes suivantes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X