git - Composer.lock संस्करण नियंत्रण के लिए प्रतिबद्ध होना चाहिए?




version-control composer-php (4)

फिर आप अपने प्रोजेक्ट में composer.json को प्रतिबद्ध करते हैं और आपकी टीम के हर कोई आपकी परियोजना निर्भरताओं को स्थापित करने के लिए संगीतकार इंस्टॉल चला सकता है।

लॉक फ़ाइल का बिंदु स्थापित किए गए सटीक संस्करणों को रिकॉर्ड करना है ताकि उन्हें फिर से इंस्टॉल किया जा सके। इसका अर्थ यह है कि यदि आपके पास संस्करण का संस्करण 1 है। * और आपका सहकर्मी संगीतकार अद्यतन चलाता है जो 1.2.4 इंस्टॉल करता है, और उसके बाद composer.lock फ़ाइल करता है, जब आप संगीतकार स्थापित करते हैं, तो आपको 1.2.4 भी मिलेंगे, यहां तक ​​कि आपको 1.2.4 भी मिलेगा अगर 1.3.0 जारी किया गया है। यह सुनिश्चित करता है कि परियोजना पर काम करने वाले सभी का एक ही सटीक संस्करण है।

इसका मतलब यह है कि अगर किसी संगीतकार इंस्टॉल को आखिरी बार किया गया था, तो लॉक फ़ाइल के बिना, आपको नया तृतीय-पक्ष कोड खींचा जा रहा है

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

स्रोत: blog.engineyard.com/2014/composer-its-all-about-the-lock-file

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

स्रोत: संगीतकार - मूल उपयोग

मैं composer.lock साथ थोड़ा उलझन में हूं। एक आवेदन में एक भंडार के साथ प्रयोग किया जाता है।

मैंने कई लोगों को यह कहते हुए देखा कि हमें नहीं चाहिए। composer.lock को composer.lock से .gitignore

अगर मैं अपने देव वातावरण में अपने पुस्तकालयों को अद्यतन करता हूं, तो मेरे पास एक नया composer.lock होगा। composer.lock लेकिन मैं उन्हें उत्पादन में अपडेट नहीं कर पाऊंगा, क्या मैं?

क्या यह इस फाइल पर संघर्ष उत्पन्न नहीं करेगा?


  1. आपको सीधे उत्पादन पर अपनी निर्भरताओं को अपडेट नहीं करना चाहिए।
  2. आपको संस्करण को अपने composer.lock फ़ाइल को नियंत्रित करना चाहिए।
  3. आपको संस्करण को अपनी वास्तविक निर्भरताओं को नियंत्रित नहीं करना चाहिए।

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

2. आपको संस्करण को अपने composer.lock फ़ाइल को नियंत्रित करना चाहिए , क्योंकि यह आपकी निर्भरताओं और आपकी निर्भरताओं की निर्भरताओं के बारे में जानकारी संग्रहीत करता है जो आपको कोड की वर्तमान स्थिति को दोहराने की अनुमति देगा। यह महत्वपूर्ण है, क्योंकि, आपके सभी परीक्षण और विकास विशिष्ट कोड के खिलाफ किए गए हैं। आपके पास मौजूद कोड के वास्तविक संस्करण की परवाह नहीं है, आपके आवेदन में कोड बदलने के अपलोड के समान है और उनका परीक्षण नहीं कर रहा है। यदि आप अपने निर्भरता संस्करणों को अपग्रेड कर रहे हैं, तो यह स्वेच्छा से कार्य करना चाहिए, और आपको यह सुनिश्चित करने के लिए आवश्यक देखभाल करना चाहिए कि सब कुछ अभी भी काम करता है। पिछले रिलीज़ संस्करण में वापस आने के एक या दो घंटे का समय खोने से आपको बहुत पैसा मिल सकता है।

कंपोज़र.लॉक की आवश्यकता नहीं होने के बारे में आप जो तर्क देखेंगे, उनमें से एक यह है कि आप अपने composer.json फ़ाइल में आवश्यक सटीक संस्करण सेट कर सकते हैं, और इस तरह, हर बार जब कोई composer install , तो यह उन्हें इंस्टॉल करेगा एक ही कोड यह सच नहीं है, क्योंकि, आपकी निर्भरताओं की अपनी निर्भरताएं होती हैं, और उनकी कॉन्फ़िगरेशन को प्रारूप में निर्दिष्ट किया जा सकता है जो इसे उपversणों, या यहां तक ​​कि पूरे संस्करणों के अपडेट की अनुमति देता है।

इसका मतलब यह है कि जब भी आप निर्दिष्ट करते हैं कि आप अपने संगीतकार.जेसन में लैरावेल 4.1.31 चाहते हैं, तो लैरवेल अपने कंपोज़र.जेसन फ़ाइल में सिम्फनी इवेंट-डिस्पैचर के रूप में अपनी निर्भरताएं आवश्यक हो सकती है: 2. *। इस तरह की कॉन्फ़िगरेशन के साथ, आप लैरवेल 4.1.31 के साथ सिम्फनी इवेंट-डिस्पैचर 2.4.1 के साथ समाप्त हो सकते हैं, और आपकी टीम के किसी अन्य व्यक्ति को घटना-प्रेषक 2.6.5 के साथ लैरवेल 4.1.31 हो सकता है, यह सब उस पर निर्भर करेगा पिछली बार जब आप संगीतकार स्थापित किया था।

इसलिए, संस्करण प्रणाली में अपनी composer.lock फ़ाइल होने से इस उप-निर्भरता के सटीक संस्करण को संग्रहीत किया जाएगा, इसलिए, जब आप और आपके टीम के साथी एक संगीतकार स्थापित करते हैं (इस तरह से आप एक संगीतकार के आधार पर अपनी निर्भरताओं को स्थापित करेंगे । लॉक ) आप दोनों एक ही संस्करण मिल जाएगा।

अगर आप अपडेट करना चाहते हैं तो क्या होगा? फिर अपने देव पर्यावरण में चलाएं: composer update , यह एक नया संगीतकार उत्पन्न करेगा। फ़ाइल खोलें (यदि कुछ नया है) और आप परीक्षण करने के बाद, और क्यूए परीक्षण और प्रतिगमन परीक्षण और सामान का परीक्षण करते हैं। आप इसे नए कंपोज़र डाउनलोड करने के लिए हर किसी के लिए धक्का दे सकते हैं। क्योंकि इसे अपग्रेड करने के लिए सुरक्षित है।

3. आपको संस्करण को अपनी वास्तविक निर्भरताओं को नियंत्रित नहीं करना चाहिए , क्योंकि इसका कोई मतलब नहीं है। Composer.lock के साथ आप निर्भरताओं के सटीक संस्करण को स्थापित कर सकते हैं और आपको उन्हें प्रतिबद्ध करने की आवश्यकता नहीं होगी। जब आप उन्हें अपडेट नहीं करना चाहते हैं, तो आप निर्भरताओं की अपनी रेपो 10000 फ़ाइलों को क्यों जोड़ देंगे। यदि आपको इनमें से किसी एक को बदलने की आवश्यकता है, तो आपको इसे फोर्क करना चाहिए और वहां अपने बदलाव करना चाहिए। और यदि आप निर्माण या रिलीज के हर बार वास्तविक निर्भरताओं को लाने के बारे में चिंतित हैं, तो संगीतकार के पास इस समस्या को कम करने के विभिन्न तरीके हैं, कैश, ज़िप फ़ाइलें इत्यादि।


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

यदि आप अपने परिवर्तन करते हैं, और कोई आपके कोड को खींचता है और निर्भरताओं को अद्यतन करता है, तो लॉकफ़ाइल को अनमोडिफाइड किया जाना चाहिए। यदि यह संशोधित है, तो इसका मतलब है कि आपके पास कुछ नया संस्करण है।

भंडार में रखने से आपको आश्वासन मिलता है कि प्रत्येक डेवलपर एक ही संस्करण का उपयोग कर रहा है।


यदि आप अपने कोड ब्रेकिंग के बारे में चिंतित हैं, तो आपको यह सुनिश्चित करने के लिए composer.lock को अपने संस्करण नियंत्रण प्रणाली में composer.lock करना चाहिए कि आपके सभी प्रोजेक्ट सहयोगी कोड के समान संस्करण का उपयोग कर रहे हैं। लॉक फ़ाइल के बिना, आपको हर बार नए थर्ड-पार्टी कोड को खींचा जायेगा।

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

स्रोत: blog.engineyard.com/2014/composer-its-all-about-the-lock-file

यह भी देखें: संगीतकार अद्यतन और संगीतकार के बीच अंतर क्या हैं?





composer-php