混乱している。混乱している。混乱している...
でも、迷いやすい…。
2 つのプロジェクトがあります。最初に使用するもの:
SVNPath /var/www/svn/proj1
2番目に使用するもの:
SVNParentPath /var/www/svn/proj2
なぜ一方SVNPath
と他方なのSVNParentPath
ですか?違いがあります。SVNPath
特定のリポジトリをいつ参照するかを指定します。複数のリポジトリSVNParentPath
を含むディレクトリを参照するときに使用します。
それで、正確にあなたの設定は何ですか?両方ともあるべきだと感じていますSVNPath
。
ところで、ユーザー リストは同じですが、AuthzSVNAccessFile
アクセス ファイルは別になっています。人々がコミットするのを止めているだけですか、それとも特定のファイルやディレクトリを読むのを妨げていますか?
通常の方法では、ユーザーがすべてのファイルを表示できるようにしますが、コミット アクセスは禁止します。その場合、私のpre-commit hookを使用して、Apache httpd の外でそれを行うことができます。これにより、次の 2 つのことが可能になります。
- Subversion を高速化するディレクトリ チェック アクセスをオフにします。
- Apache httpd を再起動せずにコミット権限を変更します。
その後、単一の構成で両方のディレクトリを構成できます。
<Location /svn>
DAV svn
SVNParentPath /var/www/svn
SVNListParentPath on
AuthType Basic
AuthName "Subversion repos"
AuthUserFile /etc/svn-auth-conf
SVNPathAuthz off
Require valid-user
</Location>
もちろん、AuthzPath を使用して読み取りアクセスを防止している場合は、AuthzSVNAccessFile
パラメーターを使用する必要があります。しかし、それは物事をより複雑にし、あなたを遅くします。ユーザーがお互いのリポジトリをのぞき見ることができないと思われる場合を除き (これは非常にまれです)、通常はこれをお勧めしません。
さらに、もう 1 つ... ユーザーは LDAP または Windows Active Directory アカウントを持っていますか? その場合、それを使用して Subversion リポジトリへのアクセスを決定できます。
LoadModule authnz_ldap_module modules/authnz_ldap.so
<Location /svn>
DAV svn
SVNParentPath /var/www/svn
SVNListParentPath on
AuthType basic
AuthName "Subversion Repository"
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPURL "ldap://windomain.mycorp.com:3268/dc=mycorp,dc=com?sAMAccountName" NONE
AuthLDAPBindDN "CN=svn_user,OU=Users,DC=mycorp,DC=com"
AuthLDAPBindPassword "swordfish"
Require ldap-group CN=developers,CN=Users,DC=mycorp,DC=com
</Location>
このように、ユーザーが Windows アカウントを持っていて (または LDAP データベースにいて)、そのユーザーが開発者グループに属している場合、Subversion リポジトリに自動的にアクセスできます (SVNParentPath
リポジトリと将来のリポジトリの両方に注意してください)。このようにして、SVN AUthorization ファイルからユーザーを常に追加および削除する必要はありません。さらに、忘れたパスワードを常に取得しているわけではありません。
ここまでは、すべて Windows 管理者の責任です。魔法です。私はあなたの仕事を彼らの仕事にしました。ユーザーは Subversion へのアクセス権を持っていませんか? もうあなたの問題ではありません。Angry Birds をプレイする時間が増えました。
/var/www
もう 1 つ小さなこと:ドキュメント ルートである可能性があるという単純な理由で、リポジトリを配置したくないと感じています。注意しないと、Subversion リポジトリ ディレクトリへの直接アクセスを許可している可能性があります。
それらを別の場所に置いて、SVNParentPath
.