设置svnperms预提交钩子

0 投票
1 回答
3280 浏览
提问于 2025-04-15 11:52

我正在尝试在一个代码库中实现svnperms,但遇到了一些困难:

在提交之前的操作(pre-commit)中,我已经设置了执行权限:

-rwxrwxr-x   1 svnadm     svn           3018 May 27 10:11 pre-commit

这是我在pre-commit中调用svnperms的代码:

# 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

我已经把svnperms.py安装在指定的位置:

# ls -l /usr/local/svn/scripts
total 24
-rwxrwxr-x   1 svnadm     svn          11840 May 25 07:48 svnperms.py

svnperms.py是UNIX格式的,没有^M换行符。

TortoiseSVN给出的反馈是:

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  

调用svnperms而不带参数时显示:

/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

UNIX管理员最近安装了python,但不确定所有的依赖项是否都齐全。如果这是问题所在,我也不知道该怎么判断,因为根据上面的输出,python似乎是正常工作的。

我漏掉了什么吗?

1 个回答

6

我猜测,python这个程序的路径没有在svn服务器的$PATH中。svnperms.py文件的开头部分是这样的:

#!/usr/bin/env python

但这假设了可执行文件在调用者的$PATH中。如果你没有权限去修改你svn服务器的运行环境,可以尝试在开头部分把python替换成你在交互式命令行中运行which python时得到的路径。

撰写回答