Diberikan konfigurasi Subversion / Apache yang khas menggunakan SVNParentPath, dengan repositori yang dihosting di bawah /svn/
seperti ini:
<Location /svn>
DAV svn
SVNParentPath /srv/source/svn/repos
SVNReposName "Subversion Repository"
AuthzSVNAccessFile /srv/source/svn/authz
Satisfy Any
AuthType Basic
AuthBasicProvider file
AuthName "Subversion Repository"
AuthUserFile /srv/source/svn/htpasswd
Require valid-user
</Location>
Apakah ada cara untuk mengganti konfigurasi ini untuk repositori tertentu tanpa harus meng-host-nya di jalur yang berbeda? Yaitu, adakah yang bisa saya tambahkan Location
blok seperti ini ...
<Location /svn/my_special_repo>
SVNPath /srv/source/svn/repos/my_special_repo
AuthzSVNAccessFile /srv/source/svn/repos/my_special_repo/conf/authz
</Location>
... dan minta ganti konfigurasi yang disediakan di
Location
blok untuk /svn
? Upaya saya melakukan ini dengan konfigurasi di atas telah bertemu dengan kesalahan aneh dan tidak membantu dalam log kesalahan Apache, seperti:
[Wed Feb 02 11:28:35 2011] [error] [client 10.10.209.120]
(20014)Internal error: Can't open file '/srv/source/svn/repos/svn/format':
No such file or directory
Semua ini tampaknya merupakan cara mod_dav_svn untuk memberi tahu saya bahwa saya tidak dapat melakukan apa yang saya coba lakukan. Saya terbuka untuk solusi atau alternatif!
EDIT : Ya, saya bisa melihat bahwa pertanyaan ini telah menghasilkan banyak kegembiraan di antara para pembaca. Sebagai catatan, apa yang saya akhirnya lakukan adalah menghasilkan konfigurasi per-repositori untuk semua repositori kami yang ada, dan kemudian meninggalkan SVNParentPath
konfigurasi berbasis. Konfigurasi per-repo Apache minimal, terutama menggunakan sesuatu seperti mod_macro ; bagian yang sulit akan memisahkan file authz global. Jika Anda pernah melakukan ini sebelumnya, tips sangat dihargai.
Jawaban:
Saya benci melihat pertanyaan saya sendiri mendekam di sana dalam daftar pertanyaan yang belum terjawab, jadi inilah yang kami lakukan:
Dalam konfigurasi server utama kami, kami memiliki:
Kami mengadopsi yang berikut
mod_macro
untuk mereplikasi perilaku ini untuk repositori baru:The
RewriteRule
memungkinkan konfigurasi repositori untuk menimpa<Location /svn/>
dalam konfigurasi utama yang lain akan cocok dengan permintaan.Dengan ini, relatif mudah untuk mengadopsi otentikasi per-repositori dan konfigurasi otorisasi (bukan
htpasswd
file global yang digunakan di sini).sumber