डिस्ट्रीब्यूटेड वर्जन कंट्रोल सिस्टम का उपयोग करें जैसे git और रेफरेंस रिपॉजिटरी को स्टोर करने के लिए अपने शेयर्ड फोल्डर मशीन का उपयोग करें। यहाँ पर क्यों:
प्रत्येक क्लोन एक बैकअप है
यदि सर्वर हार्ड ड्राइव क्रैश हो जाता है, तो सभी के पास एक कॉपी है, जो एक नए ड्राइव या सर्वर पर तैनात होने के लिए तैयार है। जैसा कि आपकी कंपनी संस्करण नियंत्रण के बारे में गंभीर नहीं है, मुझे लगता है कि यह बैकअप के साथ बहुत अधिक हो सकता है।
आम संदर्भ
एक मुख्य शाखा के साथ मुख्य भंडार होने से अंतिम शब्द वाले संस्करण को जानने की अनुमति मिलती है। यह "आपने फ्रेंक के संस्करण के खिलाफ अपने परिवर्तनों का परीक्षण किया है, लेकिन क्या आपके पास जॉन के भी हैं? और उन्हें कैसे मिला दिया?"
अधिक आराम से वितरित करें
ग्राहक आज एक अल्फा संस्करण चाहता है? ठीक है, आप परीक्षण कर सकते हैं कि क्या मास्टर पर्याप्त स्थिर है और जहाज। यदि यह नहीं है और आपके पास इसे ठीक करने का समय नहीं है, तो बस समय पर वापस जाएं और एक पुराना लेकिन अधिक स्थिर संस्करण प्राप्त करें। आप ऐसा नहीं कर सकते यदि आपके पास केवल नवीनतम संस्करण है।
समय पर वापस जाएं और अपनी गलतियों को ठीक करें
आपके मैनुअल मर्ज में वे मुद्दे थे जो आपने केवल कुछ दिनों के बाद देखे थे, लेकिन आपने पहले से ही अपने साझा किए गए फ़ोल्डरों की सामग्री को अधिलेखित कर दिया है? VSC के बिना आपके पास कोई इतिहास नहीं है, इसलिए आप आसानी से उस बिंदु पर वापस नहीं जा सकते हैं जहाँ आप अपने द्वारा की गई गलतियों की जाँच कर सकते हैं और उन्हें ठीक कर सकते हैं। कोड एक तस्वीर की तरह नहीं है, यह एक फिल्म की तरह है: यह समय में विकसित होता है। आप एक फिल्म से एक तस्वीर निकाल सकते हैं। आप चित्र से मूवी नहीं निकाल सकते।
अधिक आसानी से बग का पता लगाएं
एक बग दिखाई दिया, लेकिन आप वास्तव में इसे पेश किए जाने के समय पर ध्यान नहीं देते थे, इसलिए आप इसे ठीक नहीं कर सकते थे जबकि कोड "गर्म" था। अब आप वास्तव में नहीं जानते हैं कि किस परिवर्तन ने इसे पेश किया है, इसलिए यह कोड में कई अलग-अलग स्थानों से आ सकता है। जहां देखने के लिए सिर्फ घंटे लगेंगे। गिट के साथ, आप बस यह कहने के लिए एक परीक्षण विकसित कर सकते हैं कि क्या बग एक विशिष्ट संस्करण पर होता है, और git bissect
बग को पेश करने वाले सटीक प्रतिबद्ध को खोजने के लिए उपयोग करें। कोड की हजारों लाइनों की तलाश के बजाय, आप अब जानते हैं कि यह उस 10 लाइनों में स्थित है, और आप यह सुनिश्चित करने के लिए अपने परीक्षण सूट में परीक्षण रख सकते हैं कि बग फिर से पेश नहीं किया गया है।
प्रत्येक डेवलपर अपने काम के लिए जिम्मेदार है
यदि आप टीम लीडर हैं, और आपके पास कोई वीसीएस नहीं है, तो आपको संभवतः सबसे गंदा काम, मर्ज करना होगा। यदि आप इसे अपने दम पर करते हैं, तो आप शायद सभी परिवर्तनों के बारे में सब कुछ नहीं जानते हैं और त्रुटियों का परिचय दे सकते हैं। इसके विपरीत, यदि आप हमेशा लोगों से पूछते हैं कि कोड को आपके साथ इकट्ठा करने के लिए हर बार कोड लिखना है, तो वह समय है जब वे नए कोड का उत्पादन करने के लिए उपयोग नहीं करेंगे।
VCS के साथ, एक साधारण वर्कफ़्लो में, डेवलपर को केवल अपने काम का ध्यान रखना होता है, और परिवर्तनों का एक बाहरी स्रोत: मास्टर शाखा। मास्टर शाखा में १ या १०० लोग हो सकते हैं, वही। अपने परिवर्तनों को धकेलने में सक्षम होने के लिए, उसे दूसरों के द्वारा किए गए नवीनतम परिवर्तनों के अनुकूल होना होगा। ऐसा लगता है कि कोड को पुश करने में अधिक समय लग सकता है, लेकिन ऐसा इसलिए है क्योंकि आप मर्ज भी कर रहे हैं जो कि वैसे भी समय लेगा।
अंतर यह है कि मर्ज उस व्यक्ति द्वारा किया जाता है जिसने परिवर्तन किए, जो उस कोड को सबसे अच्छी तरह से जानता है क्योंकि उसने इसे लिखा है।
उस कोड को किसने लिखा था?
यहाँ वह बग है, लेकिन कोड की उस विशेष पंक्ति को किसने लिखा है? यह याद रखना मुश्किल है, खासकर अगर परियोजना sevral महीने तक चलती है। git blame
आपको बताया होगा कि उस लाइन को किसने और कब लिखा था, इसलिए आप सही व्यक्ति से पूछ सकते हैं, और कोई भी "मुझे यह लिखना याद नहीं है"।
प्रोजेक्ट बड़ा हो रहा है
ग्राहक अधिक सुविधाएँ चाहता है और आप एक टीम बहुत छोटे हैं, आपको एक और डेवलपर की आवश्यकता होगी। VSC के बिना आप बढ़ी हुई मर्ज जटिलता का प्रबंधन कैसे करते हैं?
तत्काल परिवर्तन
ग्राहक ने कॉल किया और उत्पादन के लिए एक महत्वपूर्ण बग फिक्स के लिए कहा, लेकिन आप वर्तमान में एक नई सुविधा पर काम कर रहे थे। बस git stash
अपने परिवर्तनों को एक तरफ रखने के लिए, या उन्हें एक नई शाखा में लागू करें और परिवर्तनों को धक्का दें और आप अपने लंबित काम को खोने के डर के बिना, तत्काल सुधार पर काम शुरू करने के लिए तैयार हैं।
10 मिनट पहले काम किया था
आप स्थानीय रूप से कुछ परिवर्तन कर रहे हैं और कुछ ने 10 मिनट पहले काम करना बंद कर दिया है। वीसीएस के बिना आप या तो कोड को या सबसे अच्छे से घूरते हैं, संदर्भ संस्करण की एक प्रतिलिपि बनाते हैं, और जो आप बदलते हैं उसे देखने के लिए अलग हैं। ओह रुको, जब से मैंने काम करना शुरू किया, संदर्भ बदल गया, इसलिए मैं अब और नहीं बदल सकता। और मैंने अपने परिवर्तनों के आधार पर कोड की एक प्राचीन प्रति रखने के बारे में नहीं सोचा था।
VCS के साथ, आप अभी कुछ ऐसा ही करते हैं git diff
, और जिस कोड पर आप आधारित हैं, उसके सही संस्करण की तुलना में आपका परिवर्तन हुआ है।
मुझे अपने डिबग लॉग को रखना होगा
तो तुम एक बुरे आदमी हो और लॉगिंग का उपयोग नहीं करते? आपको printf
अपने सभी कोडबेस में तब तक छिड़काव करना था जब तक आपको उस गंदे बग के सभी टुकड़े नहीं मिल जाते? अब आपको एक मिल गया, इसे ठीक कर दिया, लेकिन शेष मुद्दों को ठीक करने के लिए अपने सावधानी से तैयार किए गए डिबगिंग कोड को रखना चाहते हैं।
VCS के बिना, आपको या तो फ़ाइलों की प्रतिलिपि बनाने की आवश्यकता है, डिबगिंग कोड (जो कुछ संपादन त्रुटियों को जोड़ सकता है) को हटा दें, उसे धक्का दें और अपनी समर्थित फ़ाइलों को वापस डालें। ओह, लेकिन ऐसा लगता है कि कुछ डिबगिंग कोड को वैसे भी मिला।
गिट के साथ, आप बस git add --patch
और कोड की कुछ पंक्तियों का चयन करें जिसे आप अपनी प्रतिबद्धता में रखना चाहते हैं, और केवल वही कर सकते हैं । फिर आप अपना काम फिर से शुरू करते हैं और फिर भी आपका डिबगिंग कोड होता है। आपको कोड स्पर्श नहीं करना था, इसलिए कोई कॉपी / पेस्ट करने की त्रुटि नहीं थी।
मिट्टी का बड़ा गोला
वीसीएस के बिना, लोग अपने पक्ष में काम करते हैं, और आपको कभी-कभी असंबंधित परिवर्तनों का एक गुच्छा देते हैं। जब जाँच करने के लिए बहुत अधिक कोड होता है, तो बग ढूंढना कठिन होता है।
एक वीसीएस आपको छोटे, वृद्धिशील परिवर्तन करने और आपको एक चैंज करने की अनुमति देगा। चैंज आवश्यक है: लोगों को वहां बताना होगा कि वे बदलाव क्यों कर रहे हैं, न कि क्या परिवर्तन है ( कोड परिवर्तन से ही क्या सवाल का उत्तर दिया जाता है)। इसका मतलब है कि जब आप उदाहरण के लिए एक नई सुविधा के कुछ कोड का निरीक्षण कर रहे हैं, तो आपको असंबंधित बगफिक्स की तरह बहुत सारे असंबंधित मिश्रित परिवर्तनों को नहीं पढ़ना होगा। यह आपकी देखभाल करने वाले कोड पर ध्यान केंद्रित करने में मदद करता है।
यदि मैं आपको 100 आलू 1 से 1 देता हूं, और एक सड़ा हुआ है, तो आप तुरंत इसे पा लेंगे। अब अगर मैं आपके सामने 100 आलू डंप करूं और आपको सड़े हुए को खोजने के लिए कहूं, तो यह एक ही काम नहीं है।
खरोज
आशा है कि आपके पास अच्छी कोडिंग शैली की नीति होगी, अन्यथा यदि आप हाथ से विलय करते हैं, तो इंडेंटेशन परिवर्तन आपको पागल कर देगा। ज़रूर, आप बदलावों में व्हाट्सएप को अनदेखा कर सकते हैं (लेकिन भाषाओं में नहीं जब इंडेंटेशन मायने रखता है, जैसे पायथन)। लेकिन फिर आपको पढ़ने के लिए अजीब-अजीब कोड मिलेगा।
आप प्रोजेक्ट लीडर हैं
यदि आप नेता हैं, तो इसका मतलब है कि अगर आपको काम नहीं आता है तो आपको दोष मिलेगा। यदि आप स्थिति से सहज नहीं हो सकते हैं क्योंकि आपका बॉस अभी भी यह नहीं समझ सकता है कि सही नौकरी के लिए सही टूल का उपयोग करना इसके लायक है, तो बहुत कम से कम, मैं एक पूर्वानुमानित विफलता का नेता बनने से इनकार कर दूंगा।