Creados svnperms gancho pre-commit
-
06-09-2019 - |
Pregunta
Estoy tratando de poner en práctica svnperms en un repositorio, pero estoy teniendo dificultad con algunas cosas:
pre-commit tiene los permisos ejecutar:
-rwxrwxr-x 1 svnadm svn 3018 May 27 10:11 pre-commit
Este es mi llamado a svnperms plazo de 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
Tengo svnperms.py instalado en la ubicación especificada:
# ls -l /usr/local/svn/scripts
total 24
-rwxrwxr-x 1 svnadm svn 11840 May 25 07:48 svnperms.py
svnperms.py está en formato UNIX -. ^ M sin fines de línea
TortoiseSVN regresa con:
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
Llamando svnperms sin parametros muestra:
/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
El administrador de UNIX ha instalado recientemente pitón, pero no estaba seguro si todas las dependencias están ahí. Si ese es el problema, no estoy seguro de cómo determinar que, desde pitón parece estar funcionando en base a la salida anterior.
¿Qué me falta?
Solución
Mi conjetura es que la ubicación del binario python
no está en $PATH
para el servidor SVN. La línea de shabang svnperms.py
lee:
#!/usr/bin/env python
Pero eso supone que el ejecutable se encuentra en la $PATH
de la persona que llama. Si no tiene permisos para modificar el entorno de ejecución del servidor de la subversión, intente reemplazar python
en la línea shabang con la ruta dada por which python
cuando se ejecuta de forma interactiva.