Ubuntu 12.04LTSからUbuntu14.04 LTSに移行した後、Apache SVN(mod dav_svn)の動作が変更されました。
すでにチェックアウトされているプロジェクトでサーバーから更新すると、編集操作のルートを開く権限がありませんになり始めました。
独立したAuthzSVNAccessFileファイルを持つ複数のリポジトリがあり、一部は同じAuthUserFileファイルを共有しています。
以前は、12.04 LTSでは、ブラウザからリポジトリのルート(/ Example1など)へのすべてのリクエストにより、ユーザーにログインを求めるプロンプトが表示されていました。
AuthzSVNAccessFileに* = r
を追加するという提案がありましたが、これはオプションではありません。すべてのユーザーがログインする必要があるためです。つまり、すべてのリポジトリで認証が必要です。
更新時に「編集操作のルートを開くことが許可されていません」というエラーメッセージを修正しようとしています。
/etc/Apache2/mods-available/dav_svn.conf
のエントリ例:
...
<Location /Example1>
DAV svn
SVNPath /home/svn/Example1
AuthzSVNAccessFile /etc/Subversion/svnauthz-Example1.conf
Satisfy Any
Require valid-user
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/Subversion/svn-passwords
</Location>
<Location /Example2>
DAV svn
SVNPath /home/svn/Example2
AuthzSVNAccessFile /etc/Subversion/svnauthz-Example2.conf
Satisfy Any
Require valid-user
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/Subversion/svn-passwords
</Location>
...
AuthzSVNAccessFileの例:
[/]
juser = rw
アプリケーションバージョン:
$ apt-show-versions Apache2
Apache2:i386/trusty-security 2.4.7-1ubuntu4.1 uptodate
$ apt-show-versions libapache2-svn
libapache2-svn:all/trusty-security 1.8.8-1ubuntu3.1 uptodate
クライアント:
Versions v1.3.0 on OSX
svn command line v1.7.10 (r1485443) on OSX
私のエラーは、Satisfy Any
の代わりにSatisfy All
を使用することでした。
Ubuntu 12.04 LTSで動作した理由はわかりませんが、Ubuntu 14.04 LTSで「キャッチ」されたか、エラーが明らかになりました。