नई सामग्री को खोए बिना मैं साइट की विकास प्रति से लाइव साइट में परिवर्तन कैसे मर्ज कर सकता हूं?


40

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


2
भ्रम को दूर करें: विलय और माइग्रेट दो अलग-अलग शब्द हैं। आपने अपने प्रश्न में दोनों का उपयोग किया है। यदि लाइव साइट खाली है, तो आपको विकास कॉपी को लाइव साइट / होस्ट पर माइग्रेट करना होगा। यदि लाइव साइट में पहले से ही सामग्री है, तो विकास की प्रतिलिपि से नई सामग्री को लाइव साइट पर मर्ज करने की आवश्यकता है (विलय कुछ कठिन है)। तुम्हें क्या करने की ज़रूरत है?
user931

जवाबों:


16

सामग्री प्रकार, दृश्य और उपयोग करने में देव साइट नज़र पर संरचना में परिवर्तन के लिए विशेषताएं कोड करने के लिए डेटाबेस निर्यात करने के लिए।

सामग्री प्रवास के लिए कई विकल्प हैं, लेकिन एक भी ठोस समाधान नहीं है। एक उदाहरण परिनियोजन सुइट है


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

2

मैंने मूल रूप से विचार के दो स्कूलों को यहां अपनाया है (एक 3rd स्कूल ऑफ़ थिंकिंग, डेटाबेस करना अलग है, मैं चर्चा नहीं करूंगा क्योंकि जटिलता काफी अधिक है)।

1) उत्पादन डेटाबेस को गिराकर और विकास डेटाबेस के mysqldump को आयात करके तैनात करें। वैकल्पिक रूप से, किसी भी हार्ड-कोडित निरपेक्ष लिंक पर पहले से रीजेक्स फ़ाइंड / बदलें जो SQL डंप में देव URL को संदर्भित करता है। देव डीबी को ठेस में आयात करने के बाद, स्वचालित रूप से एसक्यूएल स्टेटमेंट (आमतौर पर स्क्रिप्ट के माध्यम से) को चलाने के बाद किसी भी सेटिंग्स को बदलने के लिए जो देव की तुलना में भिन्न होते हैं (उदाहरण के लिए, शायद आपके पास चर तालिका में बाहरी सिस्टम से कनेक्ट करने के लिए कुछ कनेक्शन सेटिंग्स हैं जिन्हें आपको आवश्यकता है देव संस्करण पर बजाय बाहरी प्रणालियों को इंगित करने के लिए परिवर्तन)।

2) फीचर्स मॉड्यूल का उपयोग करें , जैसा कि बोड्डा द्वारा उल्लेख किया गया है, व्यवस्थापक सेटिंग्स के लिए, और डिलीट ऑल मॉड्यूल के साथ संयोजन में सामग्री निर्यात / आयात के लिए नोड निर्यात मॉड्यूल का उपयोग करें । तो वर्कफ़्लो है:

  1. नोड्स / सुविधाओं और नोड्स / सुविधाओं को फ़ाइलों में निर्यात करने के लिए उपयोग करें
  2. वैकल्पिक रूप से (और उम्मीद है) संस्करण नियंत्रण
  3. ठेस प्रणाली पर फ़ाइलें लोड करें
  4. सुविधाओं को लोड करने के लिए ड्रश या व्यवस्थापक इंटरफ़ेस का उपयोग करें
  5. आयात करने के लिए इच्छित प्रकार के सभी नोड्स को हटाने के लिए ड्रश डिलीट-ऑल या एडमिन इंटरफ़ेस का उपयोग करें
  6. आपके द्वारा निर्यात की गई नोड्स फ़ाइल से नोड्स आयात करने के लिए ड्रश न-आयात या व्यवस्थापक इंटरफ़ेस का उपयोग करें।

एक नोट, मैं अत्यधिक मानक वर्कफ़्लो अपनाने का सुझाव दूंगा, जहां सामग्री केवल एक दिशा में जाती है। या तो देव -> निर्माण या उत्पादन -> देव (मैं इसे पसंद करता हूं)।

मैंने ऐसा किया है, और कुछ बड़े सिस्टम पर कर रहा हूं, काफी अच्छे परिणाम के साथ, लेकिन इस सेब को स्लाइस करने के कई तरीके होंगे, जो भी आपके लिए सबसे अच्छा होगा।


विकल्प 1 में, आप उस सामग्री को कैसे पुनः बना रहे हैं जिसे लाइव साइट में जोड़ा गया है जो देव साइट में नहीं है? ऐसा लगता है जैसे आप देव db के साथ यह सब लिख रहे हैं और फिर शायद कुछ सेटिंग्स / चर बदल रहे हैं। इसके अलावा, वर्तमान में आप अपनी साइट पर किस स्कूल के विचार का उपयोग कर रहे हैं? किसी भी पेशेवरों और प्रत्येक दृष्टिकोण के लिए बुरा?
चुलकी

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

1

SQL फ़ाइल में साइट की लाइव साइट कॉपी और डेवलपमेंट कॉपी के डंप डेटाबेस (दोनों डंप के लिए समान पैरामीटर और सेटिंग्स का उपयोग करें)।
फिर, दोनों SQL फ़ाइलों की तुलना एक छोटे तुलना उपकरण ExamDiff का उपयोग करके करें । यह अलग-अलग रंगों के साथ फ़ाइल अंतर को साइड-डिस्प्ले प्रदर्शित करेगा। आप सीधे मतभेदों पर भी कूद सकते हैं (स्क्रॉल किए बिना)। अंतर की जाँच करें और लाइव साइट की SQL फ़ाइल में लाइनों को जोड़ें / संपादित करें। सुनिश्चित करें कि उस फ़ाइल में विकास का कोई पूर्ण पथ / URL नहीं है। हो गया है! लाइव साइट के लिए डेटाबेस को पुनर्स्थापित करने का समय।
अपने जीवन को आसान बनाएं:पहले चरण में, केवल उन तालिकाओं को डंप करें जिन्हें बदल दिया गया है। उदाहरण के लिए, यदि आपने विकास प्रति में एक मॉड्यूल संपादित किया है जो एक अलग तालिका को लक्षित करता है, तो केवल इस तालिका को डंप करें। यदि आप विशेष तालिका के बारे में निश्चित नहीं हैं, तो पूरा डेटाबेस डंप ठीक है।


इस तकनीक की कुछ महत्वपूर्ण परिस्थितियों में गंभीर सीमाएँ हैं। उदाहरण के लिए, यदि विकास साइट में नए नोड हैं, तो आपके दोनों डेटाबेस में एक ही नोड आईडी के साथ प्रविष्टियां होंगी, और संदर्भों को हल करना और उन्हें sql डेटाबेस के पाठ डंप से मर्ज करना संभव नहीं होगा। इस तरह के ऑपरेशन को सुविधाओं और तैनाती के माध्यम से बेहतर तरीके से नियंत्रित किया जाता है, जैसा कि अन्य उत्तरों में बताया गया है।
greg_1_anderson
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.