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