लाइव साइट पर /.svn/ फ़ोल्डरों के लिए सुरक्षित है? (कैसे उन्हें हटाने के लिए लेकिन svn अद्यतन क्षमता बनाए रखें?)


10

मैं अपनी php वेबसाइट के लिए कोड अपडेट करने के लिए svn अपडेट कर रहा हूं, लेकिन यह .svn/सभी फोल्डर को छोड़ देता है ।

मुझे लगता है कि इसके फाइलों को सार्वजनिक रूप से पठनीय रूप से छोड़ना खतरनाक है, लेकिन सिस्टम को अपडेट करने के लिए यह बहुत आसान है।

क्या svn updateसिस्टम को अपडेट करने के लिए उपयोग करने का एक तरीका है, लेकिन .svn/फ़ोल्डर्स को निर्यात करने के लिए नहीं ?

जवाबों:


21

यदि आप अपाचे का उपयोग कर रहे हैं:

<Directory ~ "\.svn">
    Order allow,deny
    Deny from all
</Directory>

जो .svnदूरस्थ रूप से (ब्राउज़र का उपयोग करके) निर्देशिका को एक्सेस करने से लोगों को ब्लॉक करेगा लेकिन आप प्रोजेक्ट पर तब (और svn क्षमताओं) को रख सकते हैं।

BTW आप के \.svnलिए स्थानापन्न कर सकते हैं \.gitया \.cvsअगर आप तोड़फोड़ से अलग कुछ का उपयोग कर रहे हैं।


और यह वेबसाइट भर में सभी .svn निर्देशिकाओं को अवरुद्ध करेगा? मेरे पास कई उपनिर्देशिकाएँ हैं
सिलिकॉनपीआई

वर्तमान में मेरे httpd.conf के पास <डायरेक्टरी /> विकल्प हैं। FollowSymLinks AllowOverride ऑल </ डायरेक्टरी> क्या आप इसे नीचे लिखे एक अलग चीज के रूप में जोड़ सकते हैं या दोनों प्रविष्टियों को विलय करने की आवश्यकता है?
सिलिकॉनपी

यह .svnहां कहे जाने वाले किसी भी निर्देशिका से मेल खाएगा ।
coredump

आप इसे अलग से जोड़ सकते हैं।
coredump


3

आप SVN से लाइव साइट पर अपना कोड निर्यात करना चाहते हैं ...

svn updateउस के लिए उपयोग न करें । अद्यतन का उपयोग कार्यशील प्रतियों को अद्यतन करने के लिए होता है, कोड निर्यात करने में नहीं। svn exportइसके बजाय इसका उपयोग करें क्योंकि यह निर्दिष्ट निर्देशिका से स्वच्छ निर्देशिका के पेड़ का निर्यात करता है।

--forceझंडा मौजूदा फ़ाइलों को अधिलेखित करना निर्यात की अनुमति देगा।

SVN निर्यात मैनुअल प्रविष्टि


अगर ओपी उपयोग नहीं करना चाहता export, तो मुझे सहानुभूति हो सकती है , क्योंकि इसमें रिपॉजिटरी की पूरी नई नई कॉपी को हमेशा शामिल करना शामिल है, जो एक छोटे से कनेक्शन पर एक बड़े रेपो (वेब ​​सर्वर को होस्ट सर्वर कहते हैं, लेकिन यह एक परेशानी है, लेकिन आपका SVN रेपो आपके स्थानीय कार्यालय में है और इसे 1Mb लिंक द्वारा साझा किया गया है)। updateइसका मतलब है कि आपको हर बार पूरी चीज प्राप्त करने की आवश्यकता नहीं है।
मार्क हेंडरसन

एक उचित बिंदु। शायद साइट की एक स्थानीय प्रति को निर्यात कर रहा है, तो बस दूरस्थ वेबसर्वर में परिवर्तन rsyncing उस स्थिति में काम करेगा? मुझे वह समस्या कभी नहीं आई, इसलिए मैंने इस पर विचार नहीं किया।
gsreynolds

2

मैंने उन्हें उत्पादन / लाइव साइटों में नहीं डाला। Coz मैं नहीं चाहता कि मुझे और / या अन्य डेवलपर्स भूल जाएं कि लाइव कोड को संपादित करना कितना बुरा विचार है। मेरी स्थापित स्क्रिप्ट मेरी .svn फ़ाइलों को फ़िल्टर करती है।


@ कर्नर - फिर आप उन्हें कैसे अपडेट करते हैं?
सिलिकॉनपीआई

1
क्यों नहीं बस का उपयोग करें svn exportऔर उन्हें छानने परेशान नहीं?
pjmorse

मेरे पास एक इंस्टॉल स्क्रिप्ट है जिसे मैं अपनी साइटों के लिए उपयोग करता हूं, और प्रत्येक को सूट करने के लिए थोड़ा मोड़ देता हूं। यह आम तौर पर डेटाबेस, डीबी टेबल, और डीबी उपयोगकर्ता बनाने, किसी भी डिफ़ॉल्ट उपयोगकर्ता या व्यवस्थापक आदि का निर्माण करने के लिए सामान भी करता है। इसलिए ठेस को निर्यात करने के लिए, ठेस उपयोगकर्ता (एक मानव या एक स्क्रिप्ट के रूप में) एक svn काम कर रहा है। कॉपी कहीं ~ / के साथ, और फिर इंस्टॉल स्क्रिप्ट चलाता है जो उक्त कार्य प्रतिलिपि का एक सदस्य है, फिर वैकल्पिक रूप से कार्य प्रतिलिपि को हटा देता है।
इकरनर

1

आपको एक उचित तैनाती प्रणाली में देखना चाहिए, जैसे कि कैपिस्ट्रानो । इसका मतलब है कि आपके उत्पादन सर्वर को तोड़फोड़ की आवश्यकता नहीं है, और आप कई सर्वरों पर तैनात कर सकते हैं और तैनाती के लिए कस्टम तर्क जोड़ सकते हैं। यह वापस तैनाती को रोल करने के लिए अपेक्षाकृत आसान बनाता है।

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