2009-07-21 14 views
7

का उपयोग कर मैं वर्तमान में मेरी वेबसाइट पर मेरे सभी फाइलों को FTP जब मैं एक अद्यतन करना (एक slowish एडीएसएल कनेक्शन पर)SVN निर्यात

और मैं चीजों को आसान बनाने के लिए चाहते हैं एक वेबसाइट का प्रकाशन, इसलिए मैं अभी हाल ही में एक की मेजबानी का उपयोग शुरू किया एसवीएन सेवा, और मैंने सोचा कि मैं अपनी वेबसाइट के एसवीएन निर्यात को सीधे अपने वेबसर्वर

पर कुछ चीजों को गति दे सकता हूं मैंने कुछ बार कोशिश की है और यह ठीक काम करता है, हालांकि यह पूरी साइट को लाता है प्रत्येक बार जो 1 फ़ाइल अद्यतन

के लिए थोड़ा धीमा है, इसलिए मेरे प्रश्न

हैं

यह संभव एक निर्यात करने के लिए और केवल पिछले निर्यात के बाद से परिवर्तन (यह कैसे नष्ट कर दिया फ़ाइलों को संभाल लेंगे?)

मिलता है या यह बजाय एक SVN चेकआउट करने के लिए और SVN इसे अद्यतन हर समय आसान हो जाएगा है SVN निर्यात की और बस अपाचे htaccess का उपयोग कर .svn फ़ोल्डरों को छिपाने

यह एक अच्छा विचार है, या फिर मेरी वेबसाइट मैं शायद 1 क्लिक तैनाती प्रकार आदर्श

प्राप्त करने के लिए कोशिश कर रहा हूँ प्रकाशित करने के लिए एक बेहतर तरीका है कुछ गॉचा हैं, मैंने सोचा नहीं है कि कोई और

0 में चला गया है

डेबियन/अपाचे/php

उत्तर

8

मैं एक एसवीएन चेकआउट करता हूं, और कई वर्षों तक लाइव साइट पर सफलतापूर्वक ऐसा कर चुका हूं। आपको mod_rewrite नियमों को 404 .svn निर्देशिकाओं (और फ़ाइलों) में जोड़ना चाहिए।

हर परियोजना मैं एक संरचना है कि इस तरह के और अधिक कम दिखता है के लिए::

+0

RewriteEngine पर RewriteRule * \ SVN /.* - [F] –

+0

आदेश इनकार करते हैं, से इनकार अनुमति देने के सभी

+0

नहीं किया जा सका के रूप में यह निर्देशिकाओं पर से मेल नहीं खाता FilesMatch निर्देश काम करने के लिए करते हैं, लेकिन DirectoryMatch ठीक काम किया: क्रम अनुमति देते हैं, से इनकार सभी Miquel

5

यह मैं अपने मेजबान पर क्या कर रहा है

~/projects/myproj 
~/public_html/myproj 

पहले dir SVN से एक चेकआउट है, जबकि दूसरे एक सिर्फ एसवीएन निर्यात है।

मैं एक छोटे से बैश स्क्रिप्ट

#!/bin/bash 
SOURCE="$HOME/projects/" 
TARGET="$HOME/public_html/" 
for x in `ls $SOURCE` 
do 
    if [ -d $SOURCE$x ]; then 
     svn update $SOURCE$x 
     svn export --force $SOURCE$x $TARGET$x 
    fi 
done 

निर्यात काम कर प्रतिलिपि से किया जाता है तो वह बहुत तीव्र है।

+0

क्या फाइलों के साथ होता है से इनकार करते हैं कि आप नष्ट कर दिया है svn से, क्या आप उन्हें मैन्युअल रूप से हटाते हैं? – bumperbox

+0

उपरोक्त स्क्रिप्ट में svn अद्यतन कमांड के बाद 'rm -Rf $ TARGET $ x' जोड़ें और आपको अब उन लोगों के बारे में चिंता करने की आवश्यकता नहीं होगी – RaYell

1

यह वास्तव में वह उत्तर नहीं हो सकता है जिसे आप ढूंढ रहे हैं, लेकिन, यदि आपके पास अपने वेबसर्वर पर एसएसएच पहुंच है (यह आपकी होस्टिंग सेवा पर निर्भर करता है; कुछ "कम लागत" इस तरह की पहुंच नहीं देते हैं) आप rsync का उपयोग दूरस्थ डिस्क को "सिंक्रनाइज़" करने के लिए कर सकते हैं जो आपके डिस्क पर है।

अतीत में, मैं आपके द्वारा वर्णित विचार जैसे कुछ उपयोग कर रहा था (पिछले संशोधन के बीच एसवीएन लॉग लाने और उत्पादन के लिए धक्का, प्रत्येक पंक्ति का विश्लेषण, और अंत में सर्वर को क्या भेजना है); लेकिन यह वास्तव में एक महान प्रक्रिया नहीं थी; अब मैं rsync का उपयोग करता हूं, और इसे बेहतर तरीके से पसंद करता हूं।

(यहाँ भी, आप, .svn निर्देशिकाओं को निकालने की पड़ेगा Btw)

0

तुम सिर्फ अपनी वेबसाइट में .svn निर्देशिका होने (आम तौर पर एक समस्या esp नहीं स्वीकार आपको उसे कॉन्फ़िगर करता है, तो अनुमति देने के लिए नहीं कर सकते। इन तक पहुंच) - यह आसान विकल्प है। वैकल्पिक रूप से, राइएल क्या करता है, और वेबसर्वर पर अपनी वेबसाइट की दो प्रतियां करें। वेब-निर्देशिका के बाहर एक सामान्य चेकआउट, और आपकी वेब-निर्देशिका में से एक।जब आप अपडेट करते हैं, तो बस वेब निर्देशिका में svn (केवल .svn dirs के साथ एक प्रतिलिपि हटाएं) निर्यात करें (और आपको यह सुनिश्चित करना चाहिए कि अगर आप अपनी वेबसाइट पर शेष से एसवीएन से हटाई गई फ़ाइलों से बचें तो पुरानी फाइलों को हटाना चाहते हैं)।

मैं ऐसा कुछ करता हूं, एसओएनएन निर्देशिकाओं को छोड़कर एसवीएन चेकआउट को मिरर करने के लिए रोबोकॉपी सेट का उपयोग करके, और एक चरण में निर्यात और पुरानी फ़ाइल हटाने दोनों प्राप्त करता है, इस प्रकार प्रतिलिपि को कम करने पर डाउनटाइम को कम किया जाता है। मुझे यकीन है कि यह यूनिक्स पर भी आसान है, अगर यह आपका होस्टिंग वातावरण है। उदाहरण के लिए, आप स्थानीय rsync का उपयोग कर सकते हैं: http://blog.gilluminate.com/2006/12/12/yes-you-can-rsync-between-two-local-directories/

0

पुराना विषय लेकिन चूंकि यह मेरे शोध के दौरान Google में आया था, मैंने सोचा कि मैं इसमें शामिल करूंगा। मैं इसकी जांच करने के बजाय साइट पर निर्यात करने की सलाह देता हूं। मैं भंडारों और साइटों को अलग रखना पसंद करता हूं। मैं हर बार साइट पर पूरे रिपो को निर्यात करने की भी सिफारिश नहीं करता, खासकर अगर एक समय में केवल कुछ फ़ाइल बदलती हैं। इसके बजाय आप रेपो पर एक भिन्नता क्या देख सकते हैं यह देखने के लिए कि किसी रिलीज से दूसरे में क्या बदला गया है और केवल उन फ़ाइलों को निर्यात करें। अधिक जानकारी पर:।। http://www.joeyrivera.com/2011/automate-svn-export-to-site-w-bash-script/