तोड़फोड़ "SVNParentPath" और प्रति-रिपॉजिटरी कॉन्फ़िगरेशन को मिलाना?


9

एसवीएनपैरेंटपाथ का उपयोग करते हुए एक सामान्य तोड़फोड़ / अपाचे कॉन्फ़िगरेशन को देखते हुए /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>

क्या विशिष्ट कॉन्फ़िगरेशन के लिए इस कॉन्फ़िगरेशन को ओवरराइड करने का एक तरीका है बिना उन्हें अलग पथ पर होस्ट किए बिना ? यही है, वहाँ किसी भी तरह से मैं Locationइस तरह से एक ब्लॉक जोड़ सकता है ...

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

... और क्या इसके लिए ब्लॉक में प्रदान किए गए कॉन्फ़िगरेशन को ओवरराइड किया है ? उपरोक्त विन्यास के साथ ऐसा करने के मेरे प्रयासों को अपाचे त्रुटि लॉग में अजीब और अपुष्ट त्रुटियों के साथ मिला है, जैसे: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

यह सब मुझे बताने का तरीका mod_dav_svn का लगता है कि मैं वह नहीं कर सकता जो मैं करने की कोशिश कर रहा हूं। मैं समाधान या विकल्प के लिए खुला हूँ!

संपादित करें : ठीक है, मैं देख सकता हूँ कि इस प्रश्न ने पाठकों के बीच बहुत उत्साह पैदा किया है। रिकॉर्ड के लिए, जो मैं कर सकता हूं, वह हमारे सभी मौजूदा रिपॉजिटरी के लिए प्रति-रिपॉजिटरी कॉन्फ़िगरेशन उत्पन्न कर रहा है, और फिर SVNParentPathआधारित कॉन्फ़िगरेशन को छोड़ रहा है। प्रति-रेपो अपाचे कॉन्फ़िगरेशन न्यूनतम है, विशेष रूप से mod_macro जैसी किसी चीज़ का उपयोग करके ; हार्ड हिस्सा वैश्विक ऑर्टज़ फ़ाइल के अलावा अलग हो जाएगा। यदि आपने पहले ऐसा किया है, तो सुझावों की सराहना की जाती है।


मैं एक ही समस्या है, और mod_macro का उपयोग करके इसे हल किया है। धन्यवाद!!! (यह अपाचे या तोड़फोड़ में एक पुराना बग प्रतीत होता है।)
अचिमनोल

जवाबों:


4

मुझे अपने स्वयं के प्रश्न को अनुत्तरित प्रश्न सूची में देखने से नफरत है, इसलिए यहाँ हमने क्या किया:

  • हमारे मुख्य सर्वर विन्यास में, हमारे पास है:

      <Location /svn/>
            SVNParentPath /srv/source/svn/repos
      </Location>
    
  • हमने mod_macroनए रिपॉजिटरी के लिए इस व्यवहार को दोहराने के लिए निम्नलिखित को अपनाया :

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

    मुख्य कॉन्फ़िगरेशन में RewriteRuleरिपॉजिटरी कॉन्फ़िगरेशन को ओवरराइड करने की अनुमति देता है जो <Location /svn/>अन्यथा अनुरोध से मेल खाता है।

इसके साथ, प्रति-रिपॉजिटरी प्रमाणीकरण और प्राधिकरण कॉन्फ़िगरेशन को अपनाने के लिए यह अपेक्षाकृत आसानी से हो जाता है (यहां उपयोग की जाने वाली वैश्विक htpasswdफ़ाइल के बजाय )।


mod_macro चट्टानों
vinnyjames
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.