Configure svnperms pré-commit gancho
-
06-09-2019 - |
Pergunta
Eu estou tentando implementar svnperms em um repositório, mas estou tendo dificuldade com algumas coisas:
pré-compromisso tem as permissões de execução:
-rwxrwxr-x 1 svnadm svn 3018 May 27 10:11 pre-commit
Esta é a minha chamada para svnperms dentro 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
Eu tenho svnperms.py instalado no local especificado:
# ls -l /usr/local/svn/scripts
total 24
-rwxrwxr-x 1 svnadm svn 11840 May 25 07:48 svnperms.py
svnperms.py está no formato UNIX -. Não ^ finais de linha M
TortoiseSVN volta com:
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
Chamando svnperms sem paramters mostra:
/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
O UNIX administrador tenha instalado recentemente python, mas não tinha certeza se todas as dependências estão lá. Se esse é o problema, eu não tenho certeza de como determinar que, como python parece estar funcionando com base na saída acima.
O que eu estou ausente?
Solução
Meu palpite é que a localização do binário python
não está na $PATH
para o servidor svn. A linha de shabang de svnperms.py
lê-se:
#!/usr/bin/env python
Mas isso pressupõe que as mentiras executáveis ??no $PATH
do chamador. Se você não tem permissões para modificar o ambiente de tempo de execução do servidor de subversão, tente substituir python
na linha shabang com o caminho dado por which python
quando você executá-lo de forma interativa.