我刚刚svn
通过 https (with apache2
) 进行了配置。我可以svn checkout
,但是提交失败了。我可以从apache2
日志中看到,svn
服务器正在错误的位置查找用于执行提交的存储库。这是我的apache2
443.example.com.conf 文件:
<IfModule mod_ssl.c>
<virtualhost *:443>
# requests to https://example.com land here
ServerName example.com
DocumentRoot /home/me/svn-repos
# global properties for all directories in this site
<Location />
# do not use .htaccess files
allowoverride none
#DirectoryIndex index.html
#require all granted
DAV svn
SVNParentPath /home/me/svn-repos
AuthType Basic
AuthName "svn repositories"
AuthUserFile blah.passwd
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>
</Location>
SSLEngine On
SSLCertificateFile blah
SSLCertificateKeyFile blah
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
ErrorDocument 400 /index.html
ErrorDocument 401 /index.html
# lots more ErrorDocument entries
</virtualhost>
</IfModule>
请注意,我所有的svn
存储库都在/home/me/svn-repos
(例如/home/me/svn-repos/repo1
,,/home/me/svn-repos/repo2
等)下的目录中
因此,我查看了我的一个存储库的新本地副本:
$ cd /tmp
$ svn co --username me https://example.com/repo1 repo1
Authentication realm: <https://example.com:443> svn repositories
Password for 'me': ***
A repo1/file1.txt
Checked out revision 1.
到目前为止,一切都很好。但是当我尝试提交时:
$ touch file2.txt
$ svn add file2.txt
A file2.txt
$ svn ci file2.txt -m added
Authentication realm: <https://example.com:443> svn repositories
Password for 'me': ***
Adding file2.txt
svn: E175009: Commit failed (details follow):
svn: E175009: The XML response contains invalid XML
svn: E130003: Malformed XML: no element found
我可以从apache2
错误日志中看到svn
服务器在错误的位置寻找存储库:
$ sudo tail -4 /var/log/apache2/error.log
[Sat Dec 02 20:23:29.626227 2017] [:error] [pid 123] (20014)Internal error (specific information not available): [client x.x.x.x:x] Can't open file '/home/me/svn-repos/index.html/format': Not a directory
[Sat Dec 02 20:23:29.626264 2017] [dav:error] [pid 123] [client x.x.x.x:x] Could not fetch resource information. [404, #0]
[Sat Dec 02 20:23:29.626272 2017] [dav:error] [pid 123] [client x.x.x.x:x] Could not find the requested SVN filesystem [404, #20]
[Sat Dec 02 20:23:29.626277 2017] [dav:error] [pid 123] [client x.x.x.x:x] Could not find the requested SVN filesystem [404, #20]
它正在寻找的文件是/home/me/svn-repos/repo1/format
,但是它没有附加正确的路径才能找到该文件。我怀疑这意味着我需要在我的apache2
443.example.com.conf 文件中放一些东西,但我想不出是什么。
更新
我对 443.example.com.conf 文件进行了以下更改:
# ErrorDocument 404 /index.html
ErrorDocument 404 /indexyz.html
现在,当我尝试提交时,错误消息变为:
[Sat Dec 02 20:39:00.153942 2017] [:error] [pid 123] (20014)Internal error (specific information not available): [client 192.168.1.177:50228] Can't open file '/home/me/svn-repos/indexyz.html/format': No such file or directory
[Sat Dec 02 20:39:00.153979 2017] [dav:error] [pid 123] [client x.x.x.x:x] Could not fetch resource information. [404, #0]
[Sat Dec 02 20:39:00.153987 2017] [dav:error] [pid 123] [client x.x.x.x:x] Could not find the requested SVN filesystem [404, #2]
[Sat Dec 02 20:39:00.153992 2017] [dav:error] [pid 123] [client x.x.x.x:x] Could not find the requested SVN filesystem [404, #2]
但这仍然没有多大帮助。
使固定:
我终于让它工作了。最后它与文档根无关,它是 ErrorDocument 声明 - 我只需要将它们从 更改
/index.html
为default
. 我的最终配置如下所示: