2008-09-22 3 views
10

मैंने हमेशा साइट्स से फ़ाइलों को नीचे एफ़टीपी किया है, उन्हें संपादित किया है और साइट बनाने के दौरान उन्हें बैक अप रखा है, लेकिन लगता है कि चीजों को ठीक से सीखना सीखना उचित है।एक पीएचपी साइट को वर्जन नियंत्रण में एसवीएन का उपयोग करने का सबसे अच्छा तरीका क्या है?

मैंने बस सब कुछ एक एसवीएन रेपो में किया है, और सर्वर में sshing और एक टैग किए गए निर्माण की जांच करने के साथ ही स्विच का उपयोग कर निर्माण को अद्यतन करने की कोशिश की है।

सभी अच्छे, लेकिन यह मेरी वर्तमान प्रक्रिया से बहुत धीमी है।

इस तरह कुछ सेट करने का सबसे अच्छा तरीका क्या है? मेरा अधिकांश समय बड़ी रीराइट्स की बजाय बस बग फिक्स या छोटे बदलाव है, इसलिए मैं अक्सर चीजों को अपडेट कर रहा हूं।

+1

ऐसे प्रश्न हैं जो मुझे इस साइट से प्यार करते हैं। मेरे पास एक ही सवाल था और Google ने मुझे अपनी पसंदीदा साइट पर जवाब दिया :) –

उत्तर

7

आपको फ़ाइलों को सर्वर पर तैनात करने के लिए एसवीएन का उपयोग करने की आवश्यकता नहीं है। इसके लिए एफ़टीपी का उपयोग करना जारी रखें और संशोधन इतिहास के लिए केवल एसवीएन का उपयोग करें।

+0

नहीं, यह एक बुरा विचार है। आपकी तैनाती 1-क्लिक होने की आवश्यकता है; केवल एफ़टीपी के साथ, आपके पास डेटाबेस बैकएंड सेटअप नहीं होगा। –

+0

परामर्श कार्य के लिए, यह एक पूरी तरह से स्वीकार्य समाधान है। –

2

त्वरित अपडेट के लिए मैं बस सर्वर से svn update चलाता हूं।

कभी-कभी वास्तव में वास्तव में त्वरित अपडेट के लिए मैं vim का उपयोग करके फ़ाइलों को संपादित करता हूं और उन्हें सर्वर से प्रतिबद्ध करता हूं।

यह बहुत उचित नहीं है, लेकिन त्वरित और काफी विश्वसनीय है।

1

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

हालांकि यह बहुत काम की तरह लगता है, यह वास्तव में नहीं है और एक चिकनी तैनाती प्रक्रिया के लाभ लंबे समय तक अपने लिए भुगतान से अधिक होंगे।

1

मेरी परियोजनाओं के लिए, मेरे पास आमतौर पर एक रेपो होता है। मेरे लैपटॉप पर एक कामकाजी प्रति है, और लाइव वेबसाइट एक कामकाजी प्रति है। मैं अपने स्थानीय वेबसर्वर का उपयोग करके स्थानीय प्रतिलिपि पर अपने परिवर्तन करता हूं। जब सब कुछ परीक्षण किया जाता है और जाने के लिए तैयार होता है, तो मैं परिवर्तन करता हूं, फिर मैं दूरस्थ सर्वर और svn अद्यतन में ssh।

मैं इस भंडार में एक फ़ोल्डर भी रखता हूं जिसमें डेटाबेस संरचना में किए गए किसी भी बदलाव की एसक्यूएल फाइलें होती हैं, जो उनके संशोधन संख्या के अनुसार लेबल की जाती हैं। उदाहरण के लिए, जब मैं संशोधन 74 करता हूं और इसमें टेबल में से एक में कुछ अतिरिक्त कॉलम होते हैं, तो प्रतिबद्धता में शामिल dbupdates/rev74.sql होगा। इस तरह, मैं अपने svn अद्यतन करने के बाद, मुझे बस अपनी एसक्यूएल फ़ाइल (mysql db_name -p -u उपयोगकर्ता नाम < dbupdates/rev74.sql) चलाने के लिए है और मुझे जाना अच्छा लगता है।

0

मैं काम पर क्या करता हूं, परीक्षण सर्वर में परिवर्तन अपलोड करने के लिए एफ़टीपी का उपयोग करता है। फिर जब मैं उस साइट के अनुभाग के साथ समाप्त हो जाता हूं जिस पर मैं काम कर रहा था, तो मैं परिवर्तन करता हूं और दोनों अपडेट करता हूं। कभी-कभी, अगर मैं किसी चीज़ पर काम कर रहा हूं और मैं विभिन्न निर्देशिकाओं में बहुत सी फाइलें बदलता हूं, तो मैं इसे प्रतिबद्ध करता हूं और परीक्षण सर्वर को अद्यतन करता हूं। लेकिन मैं उत्पादन सर्वर अद्यतन नहीं करता हूं। लेकिन मैं यहां एकमात्र प्रोग्रामर हूं, यदि एक से अधिक प्रोग्रामर हैं तो मैं संभावित रूप से छोटी गाड़ी कोड करने की अनुशंसा नहीं करता।

1

यदि आप इसके साथ असली फंकी प्राप्त करना चाहते हैं, तो आप एसवीएन से वर्तमान संस्करण प्राप्त करने के लिए एक बिल्ड स्क्रिप्ट का उपयोग कर सकते हैं, फिर compile अपने PHP कोड, फिर सफल निर्माण पर, स्वचालित रूप से अपने सर्वर में परिवर्तनों को दबाएं।

इससे डिबगिंग में मदद मिलेगी और आपका कोड तेजी से चल सकता है।साथ ही, बिल्ड आदत में आने से वास्तव में PHP को सीधे सर्वर पर और फ़ायरफ़ॉक्स के माध्यम से डिबगिंग करने पर मेरे कोडिंग में सुधार हुआ है।

+0

मुझे आश्चर्य है कि "php संकलन" के बारे में कोई बात किसने कहा ?? – Qchmqs

+0

@Qchmqs ने कोई नहीं किया। लेकिन एक संकलन चरण जोड़ना आपको सर्वर पर धक्का देने से पहले स्वचालित परीक्षण और त्रुटि का पता लगाने का अवसर प्रदान करता है। –

+0

अभी भी यह नहीं मिला है, आप php संकलित क्यों करना चाहते हैं ?? – Qchmqs

1

स्रोत नियंत्रण के लाभ स्वयं को परियोजना की जटिलता और डेवलपर्स की संख्या में वृद्धि के रूप में प्रकट करते हैं। यदि आप सीधे रिमोट सर्वर पर काम कर रहे हैं, और अधिकांश समय केवल त्वरित पैच बना रहे हैं, तो स्रोत नियंत्रण आपके लिए प्रयास के लायक नहीं हो सकता है।

अधिमानतः, आपको भंडार की स्थानीय कार्य प्रतिलिपि से काम करना चाहिए (जिसका अर्थ है कि आपको स्थानीय सर्वर भी स्थापित करना चाहिए)। एसवीएन का उपयोग कर रिमोट सर्वर के खिलाफ काम करने के लिए इसे अपडेट करने का एकमात्र साधन आपको काफी धीमा कर देगा। यह कहकर, एसवीएन (या किसी अन्य स्रोत नियंत्रण) के साथ काम करने से लंबे समय तक कई लाभ मिलेगा - आपके पास परिवर्तनों का पूरा इतिहास है, आप हमेशा यह सुनिश्चित कर सकते हैं कि सर्वर अद्यतित है (यदि आप अपडेट चलाते हैं) और यदि आप प्रोजेक्ट में अधिक डेवलपर्स जोड़ते हैं तो आप एक दूसरे से महंगा स्रोत ओवरराइट से बच सकते हैं।

0

मैं ग्रहण के लिए ज़ेंडस्टूडियो का उपयोग करता हूं (वर्तमान में संस्करण 6.1)। और मैं अपने स्रोत कोड को उपलब्ध रखने के लिए एसवीएन का उपयोग करता हूं। शुरू में मैंने सोचा था कि प्रतिबद्ध प्रक्रिया (और प्रतिबद्ध टिप्पणी दर्ज करने) के कारण प्रक्रिया कुछ हद तक धीमी थी और जब तक यह बंद नहीं हो जाती तब तक प्रतीक्षा करें।

हालांकि यह सीखने के बाद कि Ctrl + Alt + C को कमेट करने और 'हमेशा पृष्ठभूमि में चलाने' की जांच करने के बाद, प्रक्रिया बिल्कुल धीमी नहीं होती है।

प्लस, मैं स्थानीय रूप से सबकुछ चलाता हूं, फिर थोड़ी देर के बाद केवल एसएसएच चलाता हूं।

2

आपको अपने सर्वर में बदलाव अपलोड करने के लिए rsync इंस्टॉल करना चाहिए।

रुपये बहुत अच्छा है क्योंकि यह रिपो की आपकी स्थानीय प्रतिलिपि की प्रतिलिपि उस प्रतिलिपि की तुलना करता है जो वर्तमान में सर्वर पर है और फिर केवल बदली गई फ़ाइलों को भेजता है।

यह आपको हर फ़ाइल को याद रखने और उन्हें मैन्युअल रूप से एफ़टीपी में चुनने, या सर्वर पर अपनी पूरी स्थानीय प्रति अपलोड करने के लिए सहेजता है (और तुलना करने के लिए एफ़टीपी छोड़कर) को सहेजता है।

रुनक आपको अपने सर्वर के बीच समन्वयित करते समय फ़ाइलों/फ़ोल्डर (यानी .svn/फ़ोल्डर्स) को बाहर करने देता है।

0

मैंने अपने वेब को स्वचालित रूप से अपडेट करने के लिए पोस्ट-प्रतिबद्ध हुक किया था। यह तेज़ है लेकिन आप गलतियां कर सकते हैं।

2

मैं आपको सभी परिवर्तनों को ट्रैक करने के लिए सबवर्सन का उपयोग करना जारी रखूंगा, यहां तक ​​कि बग फिक्स भी। जब आप अपने उत्पादन सर्वर पर तैनाती करना चाहते हैं, तो आपको एसएसएच का उपयोग करना चाहिए और svn update पर कॉल करना चाहिए। इस प्रक्रिया को Capistrano का उपयोग करके स्वचालित किया जा सकता है, जिसका अर्थ है कि आप अपने स्थानीय बॉक्स में बैठ सकते हैं और cap deploy पर कॉल कर सकते हैं - कैपिस्ट्रानो आपके सर्वर में एसएसएच करेगा और सबवर्जन अपडेट करेगा। बहुत कठोर मैनुअल श्रम बचाता है।

0

एक * nix सर्वर पर और यदि आपके पास उपयुक्त SSH पहुँच और आप वेबसाइट की अनेक कॉपी रखने के लिए जगह है है, तो सबसे उपयोगी संस्करण तकनीक मैं पाया है उपयोग करने के लिए है वेबसाइट के "वर्तमान" संस्करण को इंगित करने के लिए एक प्रतीकात्मक लिंक। (आप अभी भी संस्करण स्रोत कोड के लिए SVN उपयोग कर सकते हैं - यह एक तरह से आसानी से/तुरन्त सर्वर पर वेबसाइट के संस्करण के बीच स्विच करने के लिए है।)

  1. वेबसर्वर सेट अप के रूप में /whatever.com को इंगित करने के वेबसाइट की जड़।

  2. की तरह एक फ़ोल्डर/वेबसाइट/r1v00 जो आप वेबसाइट फ़ाइलें एफ़टीपी के लिए है, तो एक सिमलिंक "whatever.com" कहा जाता है कि/वेबसाइट के लिए अंक बनाने/r1v00

  3. है आप के एक अद्यतन संस्करण है जब वेबसाइट, अद्यतन वेबसाइट के लिए सभी वेबसाइट/वेबसाइट/r1v001, FTP नामक एक और फ़ोल्डर बनाएं, फिर "whatever.com" के लिए symlink को अब/वेबसाइट/r1v01 पर इंगित करें। अगर कोई नई साइट के साथ कोई समस्या है, आप इसे बाहर तुरन्त बस/वेबसाइट/r1v00

बेशक

वापस "whatever.com" सिमलिंक इंगित करके बैकअप ले सकते हैं, तो आप/पर ऐसी स्क्रिप्ट सेट करना चाहिए कर सकते हैं सिमलिंक के निर्माण और स्विचिंग को स्वचालित करें। मेरे मामले में, मेरे पास PHP में लिखा गया एक "व्यवस्थापक" पृष्ठ है जो सभी उपलब्ध संस्करणों को सूचीबद्ध करता है, और मुझे उनमें से किसी भी पर स्विच करने की अनुमति देता है। इस तकनीक ने कई बार मेरे बेकन को बचा लिया है ...!

स्पष्ट रूप से यह संस्करण डेटाबेस स्कीमा या डेटाबेस सामग्री के साथ किसी भी समस्या का समाधान नहीं करता है।

+0

यह एक सुरुचिपूर्ण समाधान नहीं है, इसकी सभी ब्रूट फोर्स = / – qodeninja

संबंधित मुद्दे

 संबंधित मुद्दे