"ऐसी समस्याएं नहीं हैं जो केवल हैकिंग कोर द्वारा हल की जा सकती हैं? फिर क्या?"
इस प्रश्न का उत्तर देने के लिए, हाँ, कभी-कभी ऐसी समस्याएं होती हैं जिनसे आपको उबरना होता है, अर्थात आपको कोर (या एक कंट्राब मॉड्यूल) को हैक करना होगा।
इस मामले में मेरा मानना है कि जब तक आप अपने हैक किए गए कोड में बहुत सारी टिप्पणियां डालते हैं और आप जो कुछ भी बदलते हैं उसे दस्तावेज़ करने के लिए हैक करना ठीक है।
उदाहरण के लिए, किसी भी कोर या कंट्राब परिवर्तन के लिए मैं एक पैच बनाता हूं। यदि यह अन्य लोगों के लिए सामान्य और उपयोगी है, तो मैं इसे एक मुद्दे में drupal.org को प्रस्तुत करता हूं, अन्यथा यह मेरे स्वयं के उपयोग के लिए है।
फिर मैं कोड परिवर्तन के साथ अपने संस्करण नियंत्रण के लिए पैच फ़ाइल करता हूं।
इसका मतलब है कि मैं पैच फ़ाइलों की तलाश करके देख सकता हूं कि क्या कुछ हैक किया गया है।
इसके अलावा, मैं साइट के लिए डेवलपर दस्तावेज़ीकरण के लिए हैक्स की एक सूची भी जोड़ता हूं (आपको वास्तव में अन्य लोगों के लिए डेवलपर प्रलेखन होना चाहिए जो साइट पर काम कर सकते हैं और जब आप अनिवार्य रूप से चीजों को भूल जाते हैं)।
इस हैक डॉक्यूमेंटेशन में, मैं प्रत्येक हैक को हैक और क्या करता है, के साथ सूचीबद्ध करता हूं, मॉड्यूल / फाइलें प्रभावित होती हैं, पैच फाइल का नाम जिसमें हैक कोड होता है, और एक संबंधित drupal.org लिंक का लिंक होता है अगर एक है (लगभग हमेशा मेरे मामले में) है।
फिर आप और जो कोई भी भविष्य में साइट पर काम करता है, उसके पास हैक की पूरी सूची है और उसे अपडेट के साथ गलती से कुछ तोड़ने की चिंता नहीं करनी है।
फिर अद्यतन प्रक्रिया के लिए मैं हैक की अपनी सूची की जांच करता हूं और उन सभी मॉड्यूल में पैच फ़ाइलों के लिए त्वरित रूप से देखता हूं जिन्हें मैं अपडेट कर रहा हूं। अगर कोई हैक होता है और उसमें एक drupal.org मुद्दा होता है, तो मैं यह देखने के लिए इस मुद्दे की जांच करता हूं कि क्या नवीनतम संस्करण में पैच शामिल है, जिस स्थिति में मैं अपडेट के साथ हैक को उड़ा देता हूं और इसे हैक की मेरी सूची से हटा देता हूं (बनायें drupal.org प्रतिबद्ध संदेशों को देखकर सुनिश्चित करें कि जो प्रतिबद्ध था, वही पैच का संस्करण है जो आप उपयोग कर रहे हैं, या कम से कम कार्यात्मक रूप से समान हैं)।
यदि पैच प्रतिबद्ध नहीं था, तो मुझे केवल मॉड्यूल को अपडेट करना होगा और पैच को फिर से लागू करना होगा। बहुत सारे मामलों में पैच अभी भी सफाई से लागू होंगे और प्रक्रिया आसान है, लेकिन कभी-कभी आपको नए संस्करण के लिए पैच को फिर से पढ़ना होगा और फिर पैच के नए संस्करण को अपने स्थानीय भंडार (प्रासंगिक के साथ पोस्ट करने के साथ) करना होगा। drupal.org मुद्दा जहां लागू हो)।
एक और बात मुझे पसंद है अगर मेरे पास बहुत अधिक पैच या पैच हैं जो एक मॉड्यूल के कोर fucntionality के साथ बातचीत करते हैं (या बस कस्टम मॉड्यूल जो एक drupal.org मॉड्यूल के शीर्ष पर विस्तार करते हैं), अद्यतन मॉड्यूल के रिलीज नोटों की जांच करना है ( इसका मतलब है कि आपके वर्तमान संस्करण और आपके द्वारा अपडेट किए जा रहे संस्करण के बीच सभी संस्करण) और सुनिश्चित करें कि वहाँ कुछ भी नहीं है जो आपके कोड को तोड़ने की संभावना है। नोट: संपूर्ण रिलीज़ नोट देने के साथ इन दिनों बहुत सारे मॉड्यूल मेंटेनर अच्छे हैं लेकिन अभी भी बहुत सारे हैं जो जारी नोट्स को बकवास करते हैं। इस मामले में कुछ मामलों में मैं अपने वर्तमान संस्करण के बाद से सभी प्रतिबद्ध संदेशों से गुजरता हूं (यह आमतौर पर केवल उन मामलों में होता है जहां मेरे पास जटिल कोड होता है जो किसी अन्य मॉड्यूल के साथ गहराई से बातचीत करता है)। ध्यान दें:
फिर, अद्यतन करने के बाद (साइट की एक विकास प्रति पर), अच्छी तरह से परीक्षण करें। आप अंततः सीखेंगे कि कुछ बगों के खिसकने के बाद इसका क्या मतलब है।
फिर जब इसका पर्याप्त परीक्षण किया गया है, तो लाइव साइट को अपग्रेड करें या अपने स्थानीय अपडेट को पुश करें या आपकी तैनाती की प्रक्रिया जो भी हो।
कारण यह है कि हर कोई यह नहीं करता है, भले ही यह आसान हो: क्योंकि अधिकांश लोगों के पास एक प्रणाली नहीं है जैसे कि मैंने उल्लिखित किया है, इसलिए जब अपडेट करने का समय आता है, या साइट किसी और को काम करने के लिए सौंप दी जाती है पर, यह एक दुःस्वप्न बन जाता है और बहुत समय (कभी-कभी समय की एक बड़ी मात्रा) को बग को हल करने और हैक को ट्रैक करने और बाहर काम करने में खर्च करना पड़ता है कि वे क्यों हैं, आदि।
अगर आपको कभी ऐसी साइट विरासत में मिली है, तो आप पूरी तरह से समझ जाएंगे :)