3 votes

Pourquoi mon crochet post-commit Apache Subversion échoue-t-il ?

J'essaie donc de faire fonctionner un crochet post-commit sur mon serveur Apache Subversion, plus précisément j'essaie d'envoyer un email à mon compte Google comme décrit sur ce lien .

Après avoir défini les autorisations pour le script et la copie de travail au même utilisateur et à l'accès en lecture/écriture, il a commencé à causer des erreurs MERGE lorsque les utilisateurs ont essayé de .

Après quelques lectures, j'ai découvert que c'était dû au fait que le hook post-commit ne fonctionnait pas et j'ai découvert qu'en tapant

svn - ./post-commit commit  ../ 250 mailer.conf

Je reçois cette erreur :

> annerajb@annerajb-desktop:~/Desktop/TotEM_SVN/hooks$ env - ./post-commit.test commit ../ 250

/var/lib/python-support/python2.6/svn/fs.py:27: DeprecationWarning: The popen2 module is deprecated.  Use the subprocess module.

  import sys as _sys, os as _os, popen2 as _popen2, tempfile as _tempfile

Traceback (most recent call last):

  File "/usr/share/subversion/hook-scripts/mailer/mailer.py", line 1351, in <module>
    svn.core.run_app(main, cmd, config_fname, repos_dir, sys.argv[3:3+expected_args])

  File "/var/lib/python-support/python2.6/svn/core.py", line 288, in run_app
    return apply(func, (application_pool,) + args, kw)

  File "/usr/share/subversion/hook-scripts/mailer/mailer.py", line 80, in main
    revision = int(cmd_args[0])

ValueError: invalid literal for int() with base 10: ''

./post-commit.test: 5: ../: Permission denied

Je ne sais pas pourquoi cmd_args[0] est vide si je lui passe une valeur.

#!/bin/sh
REPOS="$1"
REV="$2"
/usr/share/subversion/hook-scripts/mailer/mailer.py commit "$REPOS" \
        "$REV" /usr/share/subversion/hook-scripts/mailer/mailer.conf

0 votes

Pouvez-vous corriger le formatage de votre sortie pour utiliser des polices à largeur fixe et inclure le contenu de votre fichier post-commit ?

0 votes

Je ne sais pas comment définir la largeur des polices de caractères. J'apprécierais des instructions.

0 votes

J'ai essayé de nettoyer un peu la question. N'hésitez pas à modifier ou à revenir en arrière si j'ai détruit votre question ! !!

1voto

bk1e Points 13737

Les permissions ne doivent pas être définies pour la copie de travail, mais pour l'accès au référentiel. Aussi le droit d'exécution pour le script doit être défini par l'utilisateur qui exécute le serveur svn (ou le serveur httpd - selon votre solution).

D'après l'erreur ci-dessus, il semble que l'utilisateur qui exécute le script n'a pas d'accès direct au référentiel et ne peut pas obtenir le numéro de révision .

m

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X