Subversion “SVNParentPath” ve havuz başına yapılandırmaları karıştırma?


9

SVNParentPath kullanarak tipik bir Subversion / Apache yapılandırması verildiğinde, depolar şu şekilde barındırılıyor /svn/:

<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>

Belirli bir havuz için bu yapılandırmayı farklı bir yolda barındırmak zorunda kalmadan geçersiz kılmanın bir yolu var mı? Yani, Locationböyle bir blok eklemek için herhangi bir yolu var mı ...

<Location /svn/my_special_repo>
    SVNPath /srv/source/svn/repos/my_special_repo
    AuthzSVNAccessFile /srv/source/svn/repos/my_special_repo/conf/authz
</Location>

... ve blokta sağlanan yapılandırmayı geçersiz kılar mı? Yukarıdaki yapılandırmayla bunu yapmaya yönelik girişimlerim, Apache hata günlüğünde aşağıdaki gibi garip ve yardımcı olmayan hatalarla karşılandı:Location/svn

[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

Bütün bunlar mod_dav_svn'ın bana yapmaya çalıştığım şeyi yapamayacağımı söylemenin yolu gibi görünüyor. Çözümlere veya alternatiflere açığım!

EDIT : Bu sorunun okuyucular arasında büyük bir heyecan yarattığını görebiliyorum. Kayıt için yapabileceğim şey, mevcut tüm depolarımız için havuz başına yapılandırmalar oluşturmak ve ardından SVNParentPathtemel yapılandırmayı terk etmektir . Repo başına Apache yapılandırması minimaldir, özellikle mod_macro ; zor kısım global authz dosyasını ayırır. Bunu daha önce yaptıysanız, ipuçları takdir edilmektedir.


Ben aynı sorunu var ve mod_macro kullanarak çözdüm. Teşekkürler!!! (Apache veya Subversion'da eski bir hata gibi görünüyor.)
Achimnol

Yanıtlar:


4

Kendi sorumu cevapsız sorular listesinde orada uyandırmaktan nefret ediyorum, işte yaptıklarımız:

  • Ana sunucu yapılandırmamızda:

      <Location /svn/>
            SVNParentPath /srv/source/svn/repos
      </Location>
    
  • mod_macroBu davranışı yeni depolar için çoğaltmak amacıyla aşağıdakileri kabul ettik :

    <Macro LegacySubversionRepo $name>
        # Override SVNParentPath block in main vhost config.
        RewriteRule ^/svn/$name /repo/$name [PT]
    
        <Location /repo/$name>
                Order                   deny,allow
                Allow                   from all
    
                Use LdapAuth \
                        "$name svn repository" \
                        /srv/source/svn/htpasswd
    
                DAV svn
                SVNPath /srv/source/svn/repos/$name
                AuthzSVNAccessFile /srv/source/svn/authz
                SVNAutoversioning On
                Satisfy Any
        </Location>
    </Macro>
    

    Bu RewriteRule, havuz yapılandırmasının <Location /svn/>ana yapılandırmadaki istekle eşleşecek olanı geçersiz kılmasına izin verir .

Bu durumda, havuz başına kimlik doğrulama ve yetkilendirme yapılandırmasını benimsemek nispeten kolaylaşır ( htpasswdburada kullanılan global dosya yerine ).


mod_macro rocks
vinnyjames
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.