Les hooks GIT

In: GIT

11 sept 2009

Désolé j’ai dit dans mon précédent article que je ne reparlerai pas de GIT cette semaine.
Mais je tiens à partager ma découverte du jour que je trouve particulièrement cool :)

Il peut être particulièrement utile de, par exemple, recevoir un email à chaque fois que l’un des développeurs de votre application fait un push sur le repository distant.
Ou encore vous pouvez désirer exécuter automatiquement les tests de votre application avant chaque commit et n’autoriser le commit que si tous passent.
Et automatiser ce genre de choses pourrait être particulièrement kiffant.

Du coup … haaaave you met GIT Hooks ?
Dans le répertoire .git/hooks de votre application existent plusieurs fichiers .sample. Chacun représente un hook et est exécuté au moment opportun.
Par exemple « post-receive » sera exécuté du côté du repository distant à chaque fois que quelqu’un poussera le projet :)
De même « pre-commit » sera exécuté du côté du client avant chaque commit (et vous pourrez décider de refuser le commit automatiquement).

Par exemple plaçons dans notre fichier « post-receive.sample » que nous commencons par renommer en y enlevant l’extension « .sample » afin qu’il se nomme « post-receive » (il doit également être exécutable).

/home/ruby/scripts/post-receive.rb $1 $2 $3

Le script /home/ruby/scripts/post-receive.rb sera exécuté automatiquement à chaque post receive.
Et dans ce script nous plaçons un envoi de mail :

require 'net/smtp'
msg = "Subject: A push has been made\r\n\r\nA push has been made on one of your repositories.\r\nOld commit: " + ARGV[0] + "\r\nNew commit: " + ARGV[1] + "Ref: " + ARGV[2]
Net::SMTP.start('localhost') do |smtp|
    smtp.send_message msg, 'noreply@localhost', 'you@your_email.com'
end

Ainsi à chaque push fait, nous envoyons un email à l’adresse de notre choix (you@your_email.com) signalant qu’un nouveau push a été fait.
Cela peut être une liste de diffusion par exemple.
Mais bien évidemment cela peut être autre chose qu’un email. Il est tout à fait possible, par exemple, de signaler cela sur un salon Campfire utilisé par l’équipe de développement.

Note : si vous hébergez votre repository sur GitHub, il ne vous est pas utile de créer de hook post-receive de cette manière.
Ceux-ci sont gérés via l’interface web.

Pour quelques informations supplémentaires et notamment l’exécution automatique des tests avant un commit que j’ai mentionné plus haut, je vous invite à lire Les hooks sur le Git Book (fr).

Cet article est rédigé par Damien MATHIEU.
Et est disponible sous licence creative common by-nc-nd.
Si vous appréciez son contenu, n'hésitez pas à me recommander.

1 Response to Les hooks GIT

Avatar

Jean-Marc Fontaine

septembre 11th, 2009 at 19:48

Content de t’entendre dire du bien de Subversion pour une fois. ;)

Ads

Comment Form

Photostream

    Playing chessLyon by nightLightSunshine on Tel AvivMamanLeft Dead on the RoadReading TheatreThe MasterBefore the concert
  • Damien: Eh bien il faut ajouter le chemin statique vers ce dossier dans le fichier urls.py. Mais générale [...]
  • kev: slt, est ce que tu peux me dire ou je dois placer le repertoire js parce que le serv ne trouve pas [...]
  • Mirsal Ennaime: En général emit(doc['_id'], doc); n'est pas une bonne pratique, il vaut mieux utiliser emit(doc['_ [...]
  • Mirsal Ennaime: @Raphael AMHA, les bases de données orientées documents sont plus adaptées pour la pluspart de [...]
  • Raphaël: @Sébastien je résume pas le marché de l'informatique mais le marché des BDD. Désolé mais quand [...]

Fork me on GitHub