SVN提交后挂钩错误255
我正在尝试为我在服务器上设置的存储库创建一个非常简单的post-commit钩子。脚本如下:SVN提交后挂钩错误255,svn,bash,post-commit,post-commit-hook,Svn,Bash,Post Commit,Post Commit Hook,我正在尝试为我在服务器上设置的存储库创建一个非常简单的post-commit钩子。脚本如下: REPOS="$1" REV="$2" cd /var/www/directory && svn update --username user --password pass 从SVN客户端运行提交时,出现以下错误: post-commit hook failed (exit code 255) with no output. 但是,当我使用sudobash post-commit
REPOS="$1"
REV="$2"
cd /var/www/directory && svn update --username user --password pass
从SVN客户端运行提交时,出现以下错误:
post-commit hook failed (exit code 255) with no output.
但是,当我使用sudobash post-commit从cli运行post-commit钩子时,它会完美地执行。知道我做错了什么吗?255表示找不到文件,请尝试使用所有文件的绝对路径:
REPOS="$1"
REV="$2"
cd /var/www/directory && /usr/bin/svn update --username user --password pass
运行post-commit钩子的环境的PATH-env变量可能没有设置为包含SVN可执行文件所在的位置。好的,我已经解决了这个问题。这是一个路径问题(正如chown所建议的,我将选择他的答案)和权限问题的组合。我写了一篇关于这个问题的博文(以及通常与SVN建立关系的博文),可以在
- 别忘了添加
在提交后挂钩中。使用#/bin/sh
如果您正在使用python#/bin/env python
- 确保权限
chmoda+x post commit
- 确保钩子中的命令已安装且可访问
我在docker(基于ubuntu)中运行SVN时遇到了这个问题,并为我的Redmine同步使用了post-commit钩子:
curl "http://my.redmine.ip/sys/fetch_changesets?id=myproject&key=ETji9KUfs3XxLyyr6cRN"
我收到错误警告:提交后挂钩失败(退出代码255),没有输出
然后我猛击我的docker,手动运行这个钩子,发现没有安装“curl”
我成功地安装了curl并运行了hook,但提交时仍然会发出相同的警告
在添加#之后/bin/sh
如下所示:
#!/bin/sh
curl "http://my.redmine.ip/sys/fetch_changesets?id=myproject&key=ETji9KUfs3XxLyyr6cRN"
一切正常。如果svn服务器在apache下运行,并且操作系统正在运行SElinux,请记住授予apache运行脚本的权限,如所示:
%chcon-t httpd_exec_t/home/svn/repos/hooks/post commitHmmm。。。不走运。我已经做了此更改,并验证了svn位于/usr/bin,但仍然收到相同的错误。请确保chmod+x钩子脚本。我得到的是“post-commit hook failed(退出代码255),没有输出”。我已经将post-commit.tmpl复制到post-commit,但没有将其更改为可执行文件。另外需要注意的是,服务器id(“apache”在我的情况下)特别需要对文件的执行权限(通过所有权或组/世界访问)。我个人遇到了一个项目,其中我的预提交脚本是组可执行的,但忽略了apache不在该项目组中。由于apache已经拥有pre-commit.tmpl,所以将其移动到pre-commit,因为我不想添加world execute,也不想麻烦管理apache的组