Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SVN提交后挂钩错误255_Svn_Bash_Post Commit_Post Commit Hook - Fatal编程技术网

SVN提交后挂钩错误255

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

我正在尝试为我在服务器上设置的存储库创建一个非常简单的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
    在提交后挂钩中。使用
    #/bin/env python
    如果您正在使用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 commit

Hmmm。。。不走运。我已经做了此更改,并验证了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的组