Mettre en place svnperms pre-commit hook
-
06-09-2019 - |
Question
Je suis en train de mettre en œuvre svnperms dans un dépôt, mais je suis la difficulté avec quelques petites choses:
pre-commit a les permissions d'exécution:
-rwxrwxr-x 1 svnadm svn 3018 May 27 10:11 pre-commit
Ceci est mon appel à svnperms dans les pre-commit:
# Check that the author of this commit has the rights to perform
# the commit on the files and directories being modified.
SVNPERMS=/usr/local/svn/scripts/svnperms.py
$SVNPERMS -r $REPOS -t $TXN || exit 1
J'ai svnperms.py installé dans l'emplacement spécifié:
# ls -l /usr/local/svn/scripts
total 24
-rwxrwxr-x 1 svnadm svn 11840 May 25 07:48 svnperms.py
svnperms.py est au format UNIX -. Fins non linéaires ^ M
TortoiseSVN revient avec:
Command: Commit
Modified: C:\projects\Sandbox\Trunk\Test.txt
Sending content: C:\projects\Sandbox\Trunk\Test.txt
Error: Commit failed (details follow):
Error: 'pre-commit' hook failed with error output:
Error: No such file or directory: python
Appel svnperms sans paramters montre:
/usr/local/svn/scripts/svnperms.py
missing required option(s): repository, either transaction or a revision
Usage: svnperms.py OPTIONS
Options:
-r PATH Use repository at PATH to check transactions
-t TXN Query transaction TXN for commit information
-f PATH Use PATH as configuration file (default is repository
path + /conf/svnperms.conf)
-s NAME Use section NAME as permission section (default is
repository name, extracted from repository path)
-R REV Query revision REV for commit information (for tests)
-A AUTHOR Check commit as if AUTHOR had commited it (for tests)
-h Show this message
L'administrateur UNIX a récemment installé python, mais était pas sûr que toutes les dépendances sont là. Si tel est le problème, je ne suis pas sûr de savoir comment déterminer que, depuis python semble fonctionner en fonction de la sortie ci-dessus.
Qu'est-ce que je suis absent?
La solution
Je pense que l'emplacement du binaire python
est pas $PATH
pour le serveur svn. La ligne de shabang de svnperms.py
lit comme suit:
#!/usr/bin/env python
Mais cela suppose que le fichier exécutable se trouve dans le $PATH
de l'appelant. Si vous ne disposez pas des autorisations pour modifier l'environnement d'exécution de votre serveur subversion, essayez de remplacer python
dans la ligne de shabang avec le chemin donné par which python
lorsque vous l'exécutez de manière interactive.