पैच या कोर हैक


14

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

एक बात जो मुझे हमेशा चुभती है, हालांकि पैचेज। इन वर्षों में मैगेंटो ने "बीच-संस्करण" पैच जारी किए हैं - आमतौर पर एक सुरक्षा फिक्स, या शिपिंग / भुगतान विक्रेता के एपीआई में बदलाव को संबोधित करने के लिए।

समस्या यह है कि एक अंतर के दृष्टिकोण से, पैच कोर हैक से अप्रभेद्य हैं - खासकर जब आपको पता नहीं है कि सिस्टम में कौन सा पैच (यदि कोई है) लागू किया गया है।

जिससे मेरा सवाल बनता है।

आप एक कोर हैक और एक पैच के बीच अंतर कैसे करते हैं?

जवाबों:


16

Magento पैच समर्थन द्वारा आपूर्ति की तरह करने के लिए एक लॉग जोड़ देगा app/etc/applied.patches.list। मुझे नहीं पता कि पैच "स्क्रिप्ट्स" कब या कब से ऐसा कर रहा है। सीई पैच भी ऐसा करने लगते हैं।


साफ! मैं नहीं जानता था कि। क्या आप जानते हैं कि यह वास्तविक .patch का हिस्सा है - या समर्थन इसे मैन्युअल रूप से करता है? या (शायद?) दोनों? कुछ पुरानी .patch फ़ाइलों को देख रहा है और एक apply.patches.list फ़ाइल में कोई परिवर्तन नहीं देख रहा है।
एलन स्टॉर्म

स्वयं ने मदद की है कि पिछले एक - CE पैच यह स्वचालित करते हैं (देखें: magentocommerce.com/index.php/getmagento/ce_patches/… )
एलन स्टॉर्म

2
ऐसा प्रतीत होता है (और @ joshua-s-warren की पुष्टि होती है) कि सभी पैच फ़ाइलें समान नहीं बनाई गई हैं। यदि हम "भाग्यशाली" हैं तो पैच में यह कार्यक्षमता बनी होगी। यहां एक का एक नमूना है जो इसमें है: magentocommerce.com/index.php/getmagento/ce_patches/… यह भी केवल उन फ़ाइलों को सूचीबद्ध करता है जो बदल गई हैं और परिवर्तन नहीं आपको यह जानने के लिए पैच को ट्रैक करने की कोशिश करनी होगी कि तब भी कोई "गारंटी" नहीं है, यह उसी का उपयोग किया गया था।
बीप्लॉजिक

2
दुर्भाग्य से सबसे ईई पैच जो हमें मिला है, उसमें यह कार्यक्षमता नहीं है
एलन मैकग्रेगर

4
SUPEE टिकट के लिए .sh फ़ाइलों के रूप में वितरित सभी पैच में यह कार्यक्षमता होनी चाहिए (जब तक कि पुराने)। हैरान @AllanMacGregor आप इसे नहीं देखते हैं। क्या आपके पास उस पैच का उदाहरण है जिसे लागू किया गया है (SUPEE- नंबर) लेकिन सूचीबद्ध नहीं है?
कमिंसकी

7

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

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

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

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

इसलिए, मुझे नहीं लगता कि 100% तक इसे स्वचालित करने का एक तरीका है, जब तक कि चीजों के Magento पक्ष में परिवर्तन नहीं होते, दुर्भाग्य से।


2
मैगेंटो संस्करणों के गितुब भंडार के साथ, यह काम करने के लिए तुच्छ है। किसी कस्टम हैशिंग की जरूरत नहीं बस रिमोट जोड़ें, रिमोट लाएं और git diff depot/master origin/master। चुनौती है .gitignore। एक अन्य विकल्प, संस्करण को एक अलग डायर में क्लोन करना है, फिर उस पर साइटों की app/code/coreनिर्देशिका को कॉपी करें । git diff -wफिर आपको बताऊंगा।
मेल्विन

हमने इसे इस तरह से किया क्योंकि हम अक्सर इस सर्वर पर दूरस्थ रूप से परीक्षण कर रहे हैं जो हमें सॉफ़्टवेयर स्थापित करने की अनुमति नहीं देता है और हो सकता है कि गिट स्थापित न हो। ऐसे वातावरण में जहां गिट मौजूद है, हालांकि, आप सही हैं, आप गिट भिन्न का उपयोग कर सकते हैं।
जोशुआ एस वारेन

आह हां, मैं आपकी बात देख रहा हूं। वास्तव में मैं इस बारे में सोचने वाला हूं कि मैगरुन में ऐसा कुछ कैसे प्राप्त किया जाए।
मेल्विन

4

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

यह वास्तव में दो लाभ हैं:

  1. कोई और अधिक झूठी सकारात्मक अपने में नहीं दिखा रहा है।

  2. मान लीजिए कि आपके पास एक साइट है जिसमें एक निश्चित पैच नहीं है। आप कह सकते हैं कि यह एक समस्या है क्योंकि यह आपके कोड में लापता कोड के रूप में दिखाई देगा, भले ही तकनीकी रूप से वे एक ताजा अप्रकाशित डाउनलोड की तुलना में कुछ भी याद नहीं कर रहे हैं। लेकिन वास्तव में, कि वे एक पैच को याद कर रहे हैं वास्तव में एक समस्या है जिसे हल किया जाना चाहिए - इसलिए यह एकदम सही है कि यह अपग्रेड के साथ-साथ आपको ठीक करने के लिए आपके अंतर में दिखाता है।


4

मुझे नहीं लगता कि अगर आप 2-3 से अधिक क्लाइंट्स का प्रबंधन करते हैं, तो आपके प्रोजेक्ट रेपो में एक Magento का शुरू में एक अच्छा विचार है। चूंकि कोर हैक्स के साथ लागू सिस्टम पैच को गड़बड़ाना हमेशा आसान होता है।

मेरी राय में, सबसे अच्छा विकल्प, संस्करण टैग के साथ एक संगीतकार Magento रिपॉजिटरी दर्पण होना है, जो संभव आधिकारिक पैच के साथ एक विशेष Magento संस्करण को इंगित करता है।

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

तो इस मामले में आपके सभी ग्राहक प्रोजेक्ट्स को एक पैच किए गए Magento कोड में अपग्रेड करने से आपके कंपोज़र फ़ाइल का केवल संस्करण बम्प होगा। कोर के अलावा प्रोजेक्ट कोड को रखते हुए, आपके डेवलपर्स को कोर हैक न करने के लिए मजबूर करेगा।

पैच और एक हैक की परिभाषा के लिए, मैं इसे इस तरह से कॉल करना पसंद करूंगा:

  1. आधिकारिक पैच फ़ाइल द्वारा मूल कोर फ़ाइल में बदलाव - यह एक पैच है
  2. आपकी टीम द्वारा मूल कोर फ़ाइल में बदलाव - यह एक हैक है।
  3. बग फिक्स के उद्देश्य से स्थानीय कॉपी की गई कोर फ़ाइल में बदलाव - यह एक पैच है
  4. नई कार्यक्षमता की आपूर्ति के लिए स्थानीय कॉपी की गई कोर फ़ाइल में बदलाव - यह एक हैक है

इसलिए एक अलग रेपो में कोर घुमाकर आप यह सुनिश्चित कर लेंगे कि आपके पास आइटम 1 के अनुसार केवल पैच किया गया संस्करण है। और आप आसानी से संगीतकार कोड पर अपने स्वयं के पैच को स्थानीय कोड पूल में स्थापित कर सकते हैं, इसलिए आपके पास बिंदु 3 के अनुसार सब कुछ है। 2 के मामले में और 4 आप उस dir में किसी भी कोड कमिट को प्रतिबंधित करने के लिए प्रोजेक्ट रेपो में git कमिट हुक बना सकते हैं।


3

मैं उस /app/etc/फ़ोल्डर में लागू पैच फ़ाइल को देखता हूं और पीछे की ओर काम करता हूं । लेकिन जैसा कि मैंने अपग्रेड करने से सीखा है कि मैं केवल एक संस्करण पर फ़ाइल को हटा सकता हूं जिसमें उनके पास पैच वाली फ़ाइल है और अगली बार जब यह पैच होगा तो यह साफ है।


2

मैगेंटो से कुछ भी मैं एक पैच कॉल करूँगा। बाकी सब एक हैक है।


1
सहमत हुए, लेकिन यह कैसे बताया जाए कि तथ्य के बाद कौन सा है।
एलन स्टॉर्म

मैं शायद आधार स्थापना पर आपकी तुलना की तुलना करूँगा और फिर प्रत्येक पैच के साथ एक इंस्टॉल के खिलाफ एक अतिरिक्त तुलना अलग से लागू की जाएगी (या लागू किए गए सभी पैच का अंतिम परिणाम)। यह संभवत: परिमाण के कुछ आदेशों से अधिक काम हो सकता है, लेकिन यह एकमात्र तरीका है जिसके बारे में मैं सोच सकता हूं।
जोश पेनिंगटन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.