मैं एक Drupal साइट पर सहयोगी विकास कैसे प्रबंधित करूं?


12

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

अब हमारे पास सबसे बड़ी समस्या यह है कि हम डेटाबेस में बदलाव कैसे करते हैं, और हम अपने सोर्स कंट्रोल सिस्टम में डेटाबेस को कैसे शामिल करते हैं? फाइलें आसान हैं, बस उन सभी को ट्रैक करें (हम गिट का उपयोग करते हैं) और हमारे काम को मर्ज करते हैं, जहां संघर्ष की आवश्यकता होती है। लेकिन यह वास्तव में डेटाबेस के साथ काम नहीं करता है। हम एक एसक्यूएल डंप ले सकते हैं और हमारे गिट रिपॉजिटरी में शामिल कर सकते हैं, लेकिन हम वास्तव में डेटाबेस को मर्ज नहीं कर सकते हैं। विशेषताएं मॉड्यूल एक छोटे से मदद करता है, हमें बताने कोड जो तब संस्करणीकृत जा सकता है और विलय कर में हमारे डाटाबेस का कुछ कार्य निर्यात करें। हालांकि, सब कुछ के करीब भी नहीं है सुविधाएँ का समर्थन करता है। इसलिए...

  • अपने डेटाबेस परिवर्तनों को आसानी से मर्ज करने के लिए हम क्या कदम उठा सकते हैं?

  • हमें डेटाबेस को कैसे करना चाहिए (यह एक अच्छा तरीका है इसे करने के लिए एक डंप फ़ाइल डाल रहा है)?

  • क्या ऐसे कोई मॉड्यूल उपलब्ध हैं जो इन समस्याओं में से कुछ की मदद करते हैं?

  • या, क्या हम साइट की एक ही कॉपी पर काम कर रहे हैं? (कृपया ऐसा नहीं)


संपादित करें: टिप्पणियों में हमने चर्चा की कि किन विशेषताओं के साथ निर्यात नहीं किया जा सकता है और उनमें से एक वर्गीकरण था। इससे जुड़ा एक और सवाल है


मैं उत्सुक हूँ, विशेष रूप से आप विशेषताओं के माध्यम से क्या नहीं कर सकते हैं? बेहतर सवाल यह हो सकता है कि डेटाबेस मर्ज रूट से नीचे जाने के बजाय उन चीजों को कोड के साथ या बिना फीचर्स के कैसे एक्सपोर्ट किया जाए।
Decipher

@ डिकिफ़र मैं झंडे, टैक्सोनॉमी, मेनू, ब्लॉक और वास्तविक सामग्री के बारे में सोच सकता हूं (हालांकि मेरा मानना ​​है कि अन्य मॉड्यूल हैं जो ऐसा करते हैं) ... मुझे लगता है कि इन चीजों को निर्यात करने के लिए अपना कोड लिखना अवास्तविक होगा। फिर हर बार मैं एक नए मॉड्यूल का उपयोग करना चाहता हूं जो उन विशेषताओं का समर्थन नहीं करता है जिन्हें मुझे पहले इसके लिए समर्थन जोड़ना होगा। मेरे पास ऐसा करने का समय नहीं है।
चुलकी

मुझे लगता है कि हमें ड्रुपाल्कन में एक "फीचर" स्प्रिंट करना चाहिए, जिसमें कुछ चीजों के समर्थन को जोड़ने की कोशिश की गई है।
कोडरिनथेय

1
@Decipher ठीक है, इसलिए मैं आपसे सहमत हूँ कि कोड में सभी ब्लॉक स्टोर करने के तरीके हैं। लेकिन मुझे अभी भी लगता है कि मेरे द्वारा उपयोग किए जाने वाले प्रत्येक मॉड्यूल में फीचर सपोर्ट को जोड़ना अनुचित है, जो पहले से ही नहीं है।
चुलकी

1
मैंने कभी यह सुझाव नहीं दिया कि, मैं केवल सुझाव दे रहा हूं कि आपके द्वारा सुझाए गए मॉड्यूल के लिए पहले से ही समर्थन का समर्थन है (ध्वज को स्ट्रांगर्म के माध्यम से निर्यात करने योग्य है) मैं आपको इस रास्ते को मजबूर करने की कोशिश नहीं कर रहा हूं, यह एक कठिन रास्ते से नीचे जाने का एक विकल्प है, एक डेटाबेस दृष्टिकोण की तुलना में टीम में कोड आधारित दृष्टिकोण को बनाए रखना आसान है। अपनी टीम में मैं गैर-सुविधाओं / कोड दृष्टिकोणों का दृढ़ता से सामना करता हूं जहां मैं कर सकता हूं। मुझे पता है कि बहुत सारी चीजें हैं जो फीचर तब तक सक्षम नहीं होंगी जब तक कि यह ड्रुपल का मुख्य हिस्सा नहीं है, लेकिन यह बहुत कुछ कर सकता है।
Decipher

जवाबों:


5

यह एक वर्कफ़्लो परिवर्तन है लेकिन आपको लाइव DB के ताज़ा डंप पर काम करने की आदत डालनी चाहिए। DB में परिवर्तन प्राप्त करने के तीन तरीके हैं।

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

यदि आप। दिन में कई बार एक ताज़ा डंप करें और अपने निर्माण का परीक्षण करें, आपको कम एकीकरण समस्याएं होनी चाहिए।


4

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

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

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

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

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

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


0

हालांकि यह एक स्वीकृत उत्तर वाला एक पुराना प्रश्न है, मेरा मानना ​​है कि अभी भी एक और के लिए जगह है।

सबसे पहले, मुझे यह कहना चाहिए कि मुझे नहीं लगता कि इस कार्य के लिए सुविधाएँ सही उपकरण हैं, और वे उपकरण के वैकल्पिक सेट का प्रस्ताव रखेंगे।

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

SCM प्रणाली टीम के सदस्यों को एक दूसरे के साथ हस्तक्षेप किए बिना कोड की विभिन्न शाखाओं पर समानांतर में काम करने की अनुमति देती है । परीक्षण उद्देश्यों के लिए केवल मास्टर शाखा को मचान सर्वर पर तैनात किया गया है।

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

डंप करने के लिए:

mysqldump --all-databases --opt -u root -p > DUMP.sql

पुन: स्थापित करने हेतु:

mysql -u root -p < DUMP.sql

यदि आपका उस सर्वर पर एकमात्र डेटाबेस नहीं है, तो केवल अपने डेटाबेस को डंप mysqldumpकरने वाले mysql का कुछ संस्करण (या समकक्ष यदि आप उपयोग नहीं कर रहे हैं ) स्क्रिप्ट ।

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

ध्यान दें कि Drupal 7 डेटाबेस में अपनी सभी व्यवस्थापक सेटिंग रखता है। इसका मतलब यह है कि उत्पादन साइट, स्टेजिंग साइट और वर्कस्टेशन के बीच डेटाबेस को मिरर करना, फीचर्स के बिना एडमिशन सेटिंग्स को माइग्रेट करेगा ।

अब, कोड साझा करने के लिए:

एक विकास दल के सदस्यों के बीच कोड साझा करने का मानक तरीका SCM प्रणाली का उपयोग करना है। ड्रुपल होता है डिफ़ॉल्ट रूप से इस तरह के सिस्टम को git नाम से प्रबंधित किया जाना चाहिए ।

Git स्थानीय या दूरस्थ रिपॉजिटरी के उपयोग की अनुमति देता है। यदि टीम के सदस्य एक ही भौतिक स्थान पर स्थित हैं, तो आप अपने मंचन सर्वर पर एक स्थानीय भंडार स्थापित कर सकते हैं। यदि वे भौगोलिक रूप से फैले हुए हैं, तो आप एक दूरस्थ भंडार स्थापित कर सकते हैं। यदि आपको विकास के तहत अपने कोड पर पढ़ने की अनुमति नहीं है, तो आप Drupal.org पर एक रिमोट रिपॉजिटरी के रूप में सैंडबॉक्स का उपयोग कर सकते हैं । आप GitHub पर प्रोजेक्ट क्षेत्र का उपयोग कर सकते हैं । GitHub न केवल एक रिपॉजिटरी है, बल्कि सहयोग के लिए कुछ टूल के साथ आता है, और दोनों सार्वजनिक और निजी रिपॉजिटरी की अनुमति देता है।

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

आमतौर पर, टीम के सदस्यों के बीच कार्यों को कैसे विभाजित किया जाता है, इसके बारे में कुछ सौहार्दपूर्ण संचार के साथ, कोई संघर्ष नहीं होगा। लेकिन एससीएम प्रणाली चीजों पर नजर रखने के साथ, गलतियों या संचार विफल होने पर भी संघर्ष प्रबंधन हो जाता है।

Git (GIYF) के साथ आरंभ करने और उपयोग करने पर बहुत सारे ट्यूटोरियल मौजूद हैं । दो मैं सुझाऊंगा : स्कॉट स्कॉन द्वारा git-scm वेबसाइट और प्रो Git

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