मुझे एक Git रिपॉजिटरी मिली है जिसमें मेरा सभी कोड मास्टर ब्रांच में है, और मैं पहले केवल सभी Drupal फ़ाइलों को अनदेखा कर रहा था, ताकि मैंने कोड के बीच एक सख्त अलगाव रखा जो मैंने लिखा (या संशोधित या संशोधित हो सकता है) और कोड कि Drush के साथ या जो कुछ भी उत्पन्न हो सकता है।
यह एक अच्छी रणनीति की तरह लग रहा था जब तक मुझे ड्रुपल को अपग्रेड नहीं करना पड़ा। मुझे एहसास हुआ कि अगर चीजें खराब हो जाती हैं, तो मैं वापस रोल करने में सक्षम होना चाहता हूं और ऐसा करने के लिए गिट से बेहतर उपकरण का उपयोग क्या करना है। मैंने सोचा था कि यह एक सुविधा शाखा के लिए सही स्थिति होगी, इसलिए मैंने एक drupal-7.14
शाखा बनाई , इसे अपने .gitignore
सभी कोड और सेटिंग्स फ़ाइलों को अनदेखा करने और केवल उन फ़ाइलों पर ध्यान देने के लिए दिया जो ड्रुपल इंस्टॉल का हिस्सा हैं जो मैं नहीं करूंगा ' छूना मत। मैंने हाथ से अपग्रेड (डाउनलोड, अनज़िप, अनटार, कॉपी) किया, बॉर्डरलाइन मामलों जैसे कि रोबॉट्स.टेक्स्ट और .htaccess के माध्यम से सॉर्ट करना, और ड्रुपल की .ignignore को अपने साथ लिखना। मैंने कुछ सेटिंग्स तय कीं जो कि 500 त्रुटि से उबरने के लिए 7.14 के साथ नहीं बल्कि 7.15 के साथ काम करती हैं, और फिर सब कुछ सही लग रहा था। मैंने शाखा का नाम बदल दिया drupal-7.15
और अपने रास्ते पर खुशी से जाने वाला था।
जब तक मुझे एहसास नहीं हुआ कि मैंने अनजाने में क्या किया था: फाइलें जो पहले मेरी मास्टर शाखा द्वारा अनट्रैक की गई थीं, लेकिन काम करने वाली निर्देशिका में छोड़ दी गई थीं, अब जब मैं मास्टर की जांच कर रहा था, तो उन्हें काम करने वाली निर्देशिका से हटा दिया गया था, क्योंकि वे अब अप्राप्त फाइलें नहीं थीं! डी 'ओह!
अगर मैं drupal-7.15
मास्टर के साथ शाखा का विलय करता हूं तो मैं कोड को अलग कर दूंगा।
एक शाखा को एक सबमॉड्यूल में बदलने का शायद कोई तरीका है। यह मानते हुए कि यह सबसे अच्छी रणनीति हो सकती है। मुझे पता था कि इससे पहले कि मैं submodules "सही" समाधान था, लेकिन जब से मुझे पहले से बिना पड़ी फ़ाइलों के लिए शाखाओं का उपयोग करने के दुष्प्रभाव का एहसास नहीं हुआ, मैंने कोनों को काटने और उस मार्ग पर जाने का फैसला किया। (इसके अलावा, ड्रुपल के साथ सबमॉड्यूल्स का उपयोग करने के लिए मैंने जो सभी दृष्टिकोण देखे हैं, वे मानते हैं कि आप एक नई परियोजना शुरू कर रहे हैं और ड्रुपल मास्टर शाखा होगी। मेरे लिए किसी और के कोड को मास्टर शाखा बनाना अवांछनीय है, और मेरे पास पहले से ही था। एक मास्टर शाखा के साथ एक रेपो। ऐसा लग रहा था कि यह अपग्रेड करने के लिए अनावश्यक रूप से जटिल होगा।)
कुछ अन्य समाधान हो सकते हैं जिनके बारे में मैंने नहीं सोचा है।
मैं सबसे कम संभव गिरावट के साथ इससे कैसे उबर सकता हूं?
अद्यतन : यह विकास में है (मेरे लैपटॉप पर एक लिनक्स वीएम में), और अभी तक उत्पादन में नहीं गया है। जब तक हम उत्पादन के लिए जाते हैं, मैं योजना बना रहा हूं कि सब कुछ फीचर मॉड्यूल में लिपटा हो, लेकिन यह अभी तक लागू नहीं हुआ है।
अद्यतन 2 : सबमॉड्यूलकाम नहीं कर सकता है । प्रो Git के अनुसार, "सबमॉड्यूल्स आपको एक Git रिपॉजिटरी को दूसरे Git रिपॉजिटरी के उपनिर्देशिका के रूप में रखने की अनुमति देता है"। Drupal ऐसी कोई अच्छी जुदाई प्रदान नहीं करता है। सभी ड्रुपल कोड एक उपनिर्देशिका में होने के बजाय, संबंध कम या ज्यादा उलटे होते हैं, लेकिन अभी भी कोई साफ अलगाव नहीं है, क्योंकि आप अपने .htaccess और robots.txt का संपादन कर रहे होंगे, इसलिए आपका कोड और Drupal repo एक साथ मिलाया जाता है। मैं इस समस्या को हल करने के लिए देख रहा हूँ।