10
votes

Erreur de crochet après-valse SVN 255

J'essaie de créer un crochet post-validation très simple pour un référentiel que j'ai configuré sur mon serveur. Le script est le suivant:

post-commit hook failed (exit code 255) with no output.


0 commentaires

4 Réponses :


6
votes

255 signifie qu'un fichier n'a pas été trouvé, essayez d'utiliser le chemin absolu vers tous les fichiers:

REPOS="$1"
REV="$2"

cd /var/www/directory && /usr/bin/svn update --username user --password pass


3 commentaires

Hmmm ... pas de chance. J'ai fait ce changement et vérifié que SVN est situé à / usr / bin, mais j'ai toujours la même erreur.


Assurez-vous de chmod + x le script de crochet. J'avais "l'hook post-validation a échoué (code de sortie 255) sans sortie." J'avais copié post-commit.tmpl à post-commit, mais je n'ai pas changé cela pour être exécutable.


Une autre chose à conscience est que l'ID de serveur ("Apache" dans mon cas a besoin spécifiquement d'exécuter l'autorisation du fichier (par propriété ou accès au groupe / monde). Personnellement couru dans un projet où mon script de pré-validation était exécutable de groupe, mais négligé que Apache n'était pas dans ce groupe de projet. Étant donné que Apache possédait déjà Pre-Bigist.TMPL, il suffit de déplacer cela pour être pré-commis, car je ne voulais pas ajouter de monde exécuté ni tracas avec la gestion des groupes d'Apache.



5
votes

OK, j'ai compris le problème. C'était une combinaison d'un problème de chemin (comme suggère de chown, dont je choisirai la réponse) et une question d'autorisations. J'ai écrit un article de blog sur la question (ainsi que d'être configuré généralement avec SVN) qui peut être trouvé sur http://brennydoogles.wordpress.com


0 commentaires

1
votes
  • N'oubliez pas d'ajouter #! / bin / sh dans votre crochet post-validation.Utilise #! / bin / env python Si vous utilisez python
  • Assurez-vous que la permission CHMOD A + X post-commit
  • Assurez-vous que les commandes de votre crochet sont installées et accessibles.

    Je rencontre ce problème lors de l'exécution de SVN dans un docker (base sur Ubuntu) et utilisez un crochet post-validation pour ma synchronisation de redmine: xxx

    j'ai eu Erreur AVERTISTATEUR: Échec du code post-validation (code de sortie 255) sans sortie .

    puis je bash dans mon docker, exécutez ce crochet manuellement et découvrez que "CURL" est non installé.

    i Installez la boucle et exécutez avec succès avec succès, mais toujours le même avertissement lorsqu'il est commis.

    après Ajouter #! / bin / sh comme ça : xxx

    tout va bien.


1 commentaires

Yup, j'ai oublié chmod + x



1
votes

Également si le serveur SVN fonctionne sous Apache et que le système d'exploitation exécute SELINUX, n'oubliez pas de donner la permission Apache pour exécuter le script, comme dans:

% CHCON -T httpd_exec_t / home / svn / repos / hameçons / post-commit


0 commentaires