2010-06-18 14 views
5

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

मैंने जूमला को मर्कुरियल रिपोजिटरी में रखने के बारे में सोचा है, लेकिन हम विकास, परीक्षण और उत्पादन मशीनों के बीच डेटाबेस में परिवर्तन कैसे वितरित कर सकते हैं?

उत्तर

6

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

आम तौर पर, हम एक एकल परीक्षण डेटाबेस चलाते हैं जिसे हम सभी के बीच साझा किया जाता है ताकि यह सुनिश्चित किया जा सके कि हमारे पास लगातार डेटा है लेकिन आप आसानी से स्थानीय डीबी भी चला सकते हैं।

0

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

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

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

0

हम इन प्रकार के मुद्दों को प्रबंधित करने के लिए हमारे सर्वर पर एसवीएन का उपयोग करते हैं। यदि आप लोगों की एक टीम के साथ कोई उत्पादक विकास करने जा रहे हैं तो आपको संशोधन नियंत्रण प्रणाली का उपयोग करना होगा। वहाँ एक संख्या है, svn, cvs, git के लिए एक Google है, वे सबसे अधिक स्वीकार्य संस्करण नियंत्रण प्रणाली में से कुछ हैं। शुरुआत में सेटअप करने में कुछ समय लग सकता है लेकिन आप इससे पुरस्कार प्राप्त करेंगे!

आशा है कि मदद करता है! चीयर्स

+0

मुख्य समस्या यह है कि यह है कि स्थापित करने के लिए मुश्किल था डेटाबेस और तथ्य यह है कि हम किसी तीसरे पक्ष जूमला घटक को स्थापित या निकालने पर डेटाबेस में किए गए परिवर्तनों को नियंत्रित नहीं कर सकते हैं। – Tom

+0

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

2

हम अलग-अलग डेटाबेस के साथ अपने सभी ग्राहकों के लिए एसवीएन का उपयोग करते हैं। जब कोई नया एक्सटेंशन स्थापित करता है तो डेटाबेस बदल जाता है। एक्सटेंशन की स्थापना के बाद डेटाबेसबेसम्प के पहले और डाटाबेसम्प के एक अंतर के साथ हम जानते हैं कि अंतर क्या हैं।

+0

भी एक बहुत अच्छा विचार है! मेरी इच्छा है कि उत्तर विभाजित करने का कोई तरीका था ... – Tom

1

डाटाबेस सिंक्रनाइज़ेशन मुश्किल है, क्योंकि आप लाइव साइट में संग्रहीत सामग्री को बनाए रखना चाहते हैं, जबकि आपके dev/staging साइट्स से अन्य टेबल अपडेट करते समय।

यदि यह केवल आपके डेवलपर डेटाबेस परिवर्तन (और तृतीय पक्ष एक्सटेंशन अज्ञात अतिरिक्त तालिकाओं को जोड़ना नहीं) बनाते हैं तो आप डीबीवी https://github.com/victorstanciu/dbv जैसे कुछ देख सकते हैं।

मुझे डेटाबेस टूल का उपयोग करने के साथ उचित सफलता मिली है जैसे कि नेविटैट निर्धारित डेटाबेस सिंक सेट अप करने के लिए।यह मेरा सुझाव होगा क्योंकि यह परिभाषित करने में सबसे लचीलापन प्रदान करता है कि कौन से टेबल सिंक किए गए हैं और कब।

एक अन्य विकल्प MySQL प्रतिकृति को देखने के लिए हो सकता है, लेकिन पिछली बार मैंने देखा है जब वहाँ था डाटाबेस के बीच कोई स्पष्ट मास्टर/दास संबंध

समन्वयन किए जा करने के लिए
संबंधित मुद्दे

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