J'utilise git avec trac. Après poussée, je veux deux choses à faire:plusieurs commandes ne fonctionnent pas dans git post-receive
- l'envoi d'e-mail à l'équipe de développement avec diff
- S'il y a une phrase spéciale commettre un message (comme « voir # 1 »), je veux que le message de commit être placé dans le billet de trac.
La première chose est résolue par git-commit-notifier. Il fonctionne parfaitement après avoir créé après réception crochet:
#!/bin/sh /var/lib/gems/1.8/bin/git-commit-notifier /etc/git-commit-notifier.yml
Ma deuxième exigence peut être résolu que discribed à http://trac-hacks.org/wiki/GitPlugin#post-receivehookscripts. Il fonctionne également parfaitement avec un tel crochet post-réception:
#!/bin/sh /var/trac/testgit/commit-updater
Les 2 choses fonctionnent quand elles sont séparées. Mais j'ai besoin de les combiner. J'ai donc créé un hook post-réception:
#!/bin/sh /var/trac/testgit/commit-updater /var/lib/gems/1.8/bin/git-commit-notifier /etc/git-commit-notifier.yml
C'est très marrant, mais ça ne marche pas. Les commandes fonctionnent parfaitement bien quand elles sont exécutées séparément, mais seule la première fonctionne lorsqu'elles sont placées dans un hook post-réception.
Si j'ai tel crochet:
#!/bin/sh /var/trac/testgit/commit-updater /var/lib/gems/1.8/bin/git-commit-notifier /etc/git-commit-notifier.yml
Je reçois l'erreur suivante
/var/lib/gems/1.8/gems/git-commit-notifier-0.8.0/bin/git-commit-notifier:12: undefined method `strip' for nil:NilClass (NoMethodError) from /var/lib/gems/1.8/bin/git-commit-notifier:19:in `load' from /var/lib/gems/1.8/bin/git-commit-notifier:19
Mais si je change d'ordre de ces deux commandes, je ne reçois pas d'erreur, mais seulement la la première commande fonctionne.
J'apprécie toute aide. J'essaie de résoudre ce problème depuis longtemps et je n'ai aucune idée.
@bessarabov: ressemble à son essayant de lire STDIN, mais ne peut pas, sans doute parce que la première ligne est tout lecture. – ngoozeff
Si ngoozeff a raison, demandez à votre hook de copier son fichier stdout dans un fichier temporaire, puis de rediriger ce fichier temporaire dans chacune des deux commandes. – bstpierre
@ngoozeff merci! Votre suggestion est 100% correcte. =) Avec l'aide de @bstpierre tout fonctionne maintenant! – bessarabov