
私svn
はhttpsを介して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>
私のすべてのリポジトリは(例えばetc.)の下のディレクトリにsvn
あります。/home/me/svn-repos
/home/me/svn-repos/repo1
/home/me/svn-repos/repo2
だから私のリポジトリの1つの最新のローカルコピーを見ました。
$ 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
ファイルを見つけるための正しいパスを追加しません。私はこれが443.example.com.confファイルに何かを追加する必要があることを意味すると思いますapache2
が、何がわかりません。
修正する
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]
しかし、まだあまり役に立ちません。
答え1
- あなたは可能なすべての間違いを犯しました(3/3)
- あなたはSVNの本を読んでいません
問題を解決してください:
- 買戻契約必然ではないhttpツリー内に位置
- SVNの位置必然ではないhttp-hostのルートディレクトリにあります
- SVNの位置必然ではないhttp-host内の物理パスにあり、論理パスのみ
答え2
いよいよ動作するようになりました。結局のところ、これはドキュメントルートとは何の関係もなく、ErrorDocument宣言でした。最終構成は次のとおりです/index.html
。default
<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
DAV svn
SVNParentPath /home/me/svn-repos
AuthType Basic
AuthName "svn repositories"
AuthUserFile blah.passwd
Require valid-user
</Location>
# http://svnbook.red-bean.com/en/1.7/svn.serverconfig.httpd.html
CustomLog ${APACHE_LOG_DIR}/svn_logfile "%t %u %{SVN-ACTION}e" env=SVN-ACTION
ErrorLog ${APACHE_LOG_DIR}/error.log
SSLEngine On
SSLCertificateFile fullchain.pem
SSLCertificateKeyFile privkey.pem
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
ErrorDocument 400 default
ErrorDocument 401 default
ErrorDocument 402 default
ErrorDocument 403 default
ErrorDocument 404 default
ErrorDocument 405 default
ErrorDocument 406 default
ErrorDocument 407 default
ErrorDocument 408 default
ErrorDocument 409 default
ErrorDocument 410 default
ErrorDocument 411 default
ErrorDocument 412 default
ErrorDocument 413 default
ErrorDocument 414 default
ErrorDocument 415 default
ErrorDocument 416 default
ErrorDocument 417 default
#ErrorDocument 418 default
ErrorDocument 421 default
ErrorDocument 422 default
ErrorDocument 423 default
ErrorDocument 424 default
ErrorDocument 426 default
ErrorDocument 428 default
ErrorDocument 429 default
ErrorDocument 431 default
ErrorDocument 451 default
ErrorDocument 500 default
ErrorDocument 501 default
ErrorDocument 502 default
ErrorDocument 503 default
ErrorDocument 504 default
ErrorDocument 505 default
ErrorDocument 506 default
ErrorDocument 507 default
ErrorDocument 508 default
ErrorDocument 510 default
ErrorDocument 511 default
</virtualhost>
</IfModule>