2009-10-09 15 views
9

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

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

इस मुद्दे तक पहुंचने के तरीके के बारे में कोई सुझाव सराहना की है!

उत्तर

5

दुर्भाग्यवश, डेटाबेस परिनियोजन/अद्यतन ड्रूपल्स कमजोर धब्बे में से एक है। इसके साथ निपटने के तरीके के बारे में कुछ सुझावों के लिए this question & answers के साथ-साथ this one देखें।

सीसीके के लिए, आपको कुछ संकेत here मिल सकते हैं।

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

1

डेटाबेस डंप के पैच करने से, क्या आपका मतलब डीबी का पूरा निकालना और प्रत्येक परिवर्तन के बाद इसे करना है?

डेटाबेस की एक मास्टर प्रति के बारे में कैसे? सभी फाइलों, विचारों, एसपीएस, आदि को अलग-अलग फाइलों में निकालें, उन्हें svn में रखें और व्यक्तिगत वस्तुओं पर अपने मर्ज संपादन करें?

+0

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

+0

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

4

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

+1

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

+0

यह त्वरित और गंदे काम के लिए मौजूद है, लेकिन इसे आम तौर पर एक बुरा विचार माना जाता है- सभी eval'd कोड से बचा जाना चाहिए। जिस समस्या का आप सामना कर रहे हैं वह बिंदु में एक आदर्श मामला है। यह एक अच्छी सुविधा है- यह त्वरित प्रयोगों और सीसीके/दृश्यों के निर्माण के लिए अच्छा है जो आप जानते हैं कि आप निर्यात करेंगे और फ्लैट फ़ाइल कोड के रूप में चलेंगे। – Grayside

2

ऊपर जो कुछ कहा गया है वह सत्य और अच्छी सलाह है .. अपने व्यावहारिक प्रश्न का उत्तर देने के लिए, हाल के मॉड्यूल हैं कि आप विभिन्न डेवलपर्स द्वारा किए गए परिवर्तनों को परिवहन के लिए उपयोग कर सकते हैं।

"विशेषताएं" मॉड्यूल डीयू में अक्सर कॉन्फ़िगरेशन और संरचना को संग्रहीत करने के बावजूद ड्रूपल के वर्णित मुद्दे को अच्छी तरह से प्रदान करने का एक इलाज है। यह मॉड्यूल आपको एक फीचर को कैप्चर करने और इसे छद्म-मॉड्यूल के रूप में आउटपुट करने में सक्षम बनाता है (.info और कोड-फ़ाइलें और सभी के साथ मॉड्यूल के रूप में योग्यता प्राप्त करता है)।यह ऐसे काम करता है:

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

पुनर्निर्माण निर्यात और तुम अपने मालिक बता सकते हैं आप यह सब मैन्युअल रूप से उस्तरा ध्यान देने के साथ किया था यहां तक ​​कि 1 त्रुटि से बचने के;) मुझे आशा है कि इस मदद करता है - http://drupal.org/project/features

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

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