fov*_*ven 5 linux svn bash phabricator
我正在尝试使用 Phabricator 配置 svn。到目前为止,除了提交更改之外,一切似乎都正常。当我尝试提交任何代码时,我收到以下错误消息:
svn: E165001: Commit blocked by pre-commit hook (exit code 255) with no output.
Run Code Online (Sandbox Code Playgroud)
需要明确的是,有问题的错误消息是由 svn 客户端程序输出的。它似乎是在遇到各种问题时从 svnserve 发送的,例如由于某种原因无法运行钩子。它不必由钩子提供。
如果我删除预提交挂钩,提交将按预期进行。
出于测试目的,我创建了一个非常简单的钩子,如下所示:
#!/bin/sh
echo "testing" >&2
exit 1
Run Code Online (Sandbox Code Playgroud)
使用此挂钩时我也收到相同的错误消息。 在这种情况下,在这个脚本能够工作之前,尝试解决更复杂的脚本没有多大意义。很可能通过解决这个脚本,原来的脚本也能工作。我一直在使用这个脚本进行测试,我在这个问题中发布的所有内容都适用于这个脚本。 基本上,在这个时间点上,我所呈现的脚本确实是我正在尝试使其工作的脚本。
我已经禁用了 Phabricator 守护进程,否则预提交脚本会被 Phabricator 覆盖。
根据迄今为止我所看到的有关此错误消息的内容,以下是我认为可能有助于解决此问题的一些信息:
#!/bin/sh
echo "testing" >&2
exit 1
Run Code Online (Sandbox Code Playgroud)
foven@phabricator:~$ sudo ls -la /var/repo/SVN/hooks/
total 60
drwxr-xr-x. 3 phd phd 4096 Nov 18 13:46 .
drwxr-xr-x. 6 phd phd 4096 Nov 18 11:27 ..
-rwxr-xr-x. 1 phd phd 2062 Oct 27 10:17 post-commit.tmpl
-rwxr-xr-x. 1 phd phd 1638 Oct 27 10:17 post-lock.tmpl
-rwxr-xr-x. 1 phd phd 2289 Oct 27 10:17 post-revprop-change.tmpl
-rwxr-xr-x. 1 phd phd 1567 Oct 27 10:17 post-unlock.tmpl
-rwxr-xr-x 1 phd phd 37 Nov 18 14:39 pre-commit
drwxr-xr-x. 2 phd phd 19 Nov 17 17:05 pre-commit-phabricator.d
-rwxr-xr-x. 1 phd phd 3426 Nov 12 15:59 pre-commit.tmpl
-rwxr-xr-x. 1 phd phd 2434 Oct 27 10:17 pre-lock.tmpl
-rwxr-xr-x. 1 phd phd 2786 Oct 27 10:17 pre-revprop-change.tmpl
-rwxr-xr-x. 1 phd phd 2122 Oct 27 10:17 pre-unlock.tmpl
-rwxr-xr-x. 1 phd phd 3163 Oct 27 10:17 start-commit.tmpl
Run Code Online (Sandbox Code Playgroud)
foven@phabricator:~$ sudo getenforce
Disabled
Run Code Online (Sandbox Code Playgroud)
foven@phabricator:~$ sudo dos2unix /var/repo/SVN/hooks/pre-commit
dos2unix: converting file /var/repo/SVN/hooks/pre-commit to Unix format...
Run Code Online (Sandbox Code Playgroud)
即使环境是空的,这显然与 svn hooks 的运行方式相匹配。
[phd@phabricator ~]$ /var/repo/SVN/hooks/pre-commit
testing
Run Code Online (Sandbox Code Playgroud)
[phd@phabricator ~]$ env -i /var/repo/SVN/hooks/pre-commit
testing
Run Code Online (Sandbox Code Playgroud)
更新
根据 #svn IRC 频道中的讨论,我尝试了以下操作:
[phd@phabricator ~]$ which sh
/bin/sh
[phd@phabricator ~]$ ls -la /bin/sh
lrwxrwxrwx. 1 root root 4 Aug 18 09:37 /bin/sh -> bash
[phd@phabricator ~]$ which bash
/bin/bash
Run Code Online (Sandbox Code Playgroud)
所以这意味着钩子可以工作并且可能根本没有故障。仍然不确定问题是什么,所以不能完全排除钩子(可能钩子大部分都很好,但需要更改一些东西才能使用此配置)。但问题似乎可能出在其他地方。欢迎任何帮助。
小智 -2
以下是我的错误信息:
aaaa@zgg:~/www/eval/webroot$ svn ci -m '' index.php
正在发送index.php
正在传输文件数据 .done
正在提交事务...
svn: E165001: 提交失败(详情如下):
svn: E165001:提交被预提交挂钩阻止(退出代码 255),输出:
************************************ **************************************
* 请在提交这些更改之前更正以下错误!*********************************************************
**********************
我如何解决问题:
我刚刚在我想要提交的文件(index.php)中发现了一些语法错误,修复语法错误后我可以成功提交。
检查您的提交文件中是否有任何错误。祝你好运!