项目

通用

个人资料

操作

解析SVN输出出错

背景

Redmine是运行在Web服务器(Apache等)上的Rails应用程序。
Redmine在Web服务器上调用"svn"命令。
因此,您需要正确配置Web服务器进程的uid
检查您的Web服务器uid。
(例如:"ps -ef","top")

简介

如果在添加仓库后,在“仓库”选项卡上收到“在仓库中没有找到条目或修订”的错误,请检查您的日志文件夹(例如:/var/log/redmine/default)中的production.log。

如果在production.log中找到此错误,那么当redmine用户运行svn命令时可能存在错误

解析SVN输出出错:#<REXML::ParseException: No close tag for /lists/list>

(Redmine仍然试图将svn命令的输出解析为XML,但错误不是按XML格式化的,因此出现解析错误。)

为了排除故障,尝试以redmine用户的身份运行命令以查看错误,例如

sudo -u www-data svn list --xml 'https://svn.server.address/reponame'@HEAD

(您可能需要将"www-data ALL=(ALL) NOPASSWD:ALL"添加到/etc/sudoers)

现在解决错误,以便每次命令都能获得干净的XML。

如果您每次需要接受服务器的证书时都会收到提示,则需要给redmine用户一个目录来存储svn配置。在某个位置创建一个目录,并确保redmine用户是所有者,例如

sudo mkdir /usr/share/redmine/svn

sudo chown www-data:www-data /usr/share/redmine/svn

Redmine 1.1.x或更低版本中,
打开REDMINE_ROOT/lib/redmine/scm/adapters/subversion_adapter.rb并转到第27行
source:tags/1.1.3/lib/redmine/scm/adapters/subversion_adapter.rb#L27
并更改为

SVN_BIN = "svn"

例如,更改为

SVN_BIN = "svn --config-dir /usr/share/redmine/svn"

现在您应该能够永久接受证书。

如果您在测试svn list --xml URL后收到“svn: 无法解析URL”的消息,请检查您安装的SVN客户端版本。较旧版本在处理包含空格的文件名时存在问题,更新到较新版本以修复此问题。

待办事项
Redmine 1.2或更高版本中,此行已更改。
source:tags/1.2.3/lib/redmine/scm/adapters/subversion_adapter.rb#L35

关于Windows上的Bitnami Redmine安装的说明

Redmine服务器(对于版本> 2.0的默认值为Thin)默认运行在System账户下,并且这与SVN服务器的错误SSL证书不兼容。解决方案是将服务用户的进程账户更改为具有登录权限的服务用户,连接到SVN并永久接受该用户的证书。不要忘记更改两个在负载均衡中运行的ThinMongrel服务的用户。

议会接受错误SVN证书的另一个可能解决方案是使用psexec。以下命令显示了为系统用户账户打开的控制台,可以在其中发出svn命令并永久接受证书。

psexec -i -s cmd.exe

scm\adapter\abstact_adapter.rb中的Redmine代码应该捕获连接错误,并且不应该依赖于"No close tag for /lists/list>"来通知我们这个问题。在开发环境中运行时,stderr被捕获在日志中,但在生产环境中并不很有用。

使用SSH与SVN一起使用时出现"SVN: 连接意外关闭"。

当你执行

sudo -u www-data svn list --xml 'svn+ssh://svn.server.address/reponame'@HEAD

并收到错误"SVN: 连接意外关闭",你可能需要在托管SVN仓库的机器上为用户www-data启用shell。
只需编辑/etc/passwd并更改相应用户的条目,使其以/bin/bash结尾,而不是/bin/false/sbin/nologin
这应该可以解决这个问题。

来源
https://redmine.ruby-lang.org.cn/boards/2/topics/11896
http://www.thinkplexx.com/learn/howto/scm/svn/fix-permanent-error-validating-server-certificate-problem-with-subversion

Andrey Ivanov更新 6个月前 · 13次修订