J'ai un crochet post-mise à jour sur mon serveur, de sorte que lorsque jeQuel utilisateur utilise le hook git?
git push
il fait une traction sur le répertoire web en direct. Cependant, bien que le push réussisse toujours, le hook de post-mise à jour échoue parfois.
Le crochet est assez simple:
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".
cd /var/www
env -i git pull
Je pousse des mises à jour à partir d'une variété d'endroits, mais parfois je dois vous connecter en tant que root sur le serveur et manuall faire un
env -i git pull
Je dois seulement le faire 20% du temps cependant. Des idées pour lesquelles ça échouerait aléatoirement? De même, comment l'obtenir pour enregistrer les messages d'erreur, car il peut fonctionner comme quelqu'un qui ne peut pas écrire dans le système de fichiers?
Poussez-vous de la même façon de tous ces endroits? Autrement dit, l'URL distante est-elle la même pour tous? (en particulier, la partie user @ hostname) – Cascabel
En outre, lorsque vous dites qu'il échoue, voulez-vous dire qu'il échoue avec une erreur d'autorisation refusée qui indique qu'il s'exécute en tant qu'utilisateur avec des privilèges insuffisants? Ou est-ce qu'il échoue pour une raison complètement indépendante, rien à voir avec l'uid qui le gère? – Cascabel
Je suis en train de pousser à partir de différents endroits: parfois, c'est user1 @ hostname, d'autres fois, user2 @ hostname, etc (ils ont tous ce problème). Il échoue sans un message d'erreur que je peux voir, et je ne sais pas comment en obtenir un. Dans ma post-mise à jour, j'ai ajouté:> echo $ USER> /log.txt, mais rien n'y est écrit (le fichier n'est pas non plus créé). Cela me fait penser que l'utilisateur qui pousse, n'a pas d'autorisations. Mais si je ne peux même pas écrire un message d'erreur, comment le saurai-je? – ash