बड़े कार्यों के लिए अच्छे स्रोत नियंत्रण चेक-इन रणनीति क्या हैं?


9

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

तो लोगों को काम खोने के जोखिम को कम करने के लिए, या आपके द्वारा किए जा रहे कुछ निर्णय लेने के लिए लोग किन रणनीतियों का उपयोग करते हैं, गलत दृष्टिकोण है, फिर कोड हटाने के बाद अपने दिमाग को बदलना और दूसरे दृष्टिकोण की कोशिश करना?

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


आप किस स्रोत नियंत्रण प्रणाली से परिचित हैं?

@Thorbjorn: Svn, Perforce, और Team Foundation सर्वर। वे सब अपने pluses और minuses
डोमिनिक McDonnell

जवाबों:


13

मैं git का उपयोग करता हूं, इसलिए मेरा उत्तर "शाखा" है। विभिन्न बिट्स को पूरा करने के लिए शाखा, और टुकड़ा-भोजन करें।

अपनी खुशियों को बढ़ाएं, जैसा कि आप खुश हैं, इसलिए अपने साथियों को ट्रंक को बाधित किए बिना परिवर्तनों की समीक्षा कर सकते हैं।

जब हर कोई कोड से खुश हो जाए, तो विलीन हो जाए और आपका काम हो जाए!

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


1
आपको "मैं git का उपयोग करता हूं" के साथ अर्हता प्राप्त करने की आवश्यकता नहीं है - मैं सुझाव दूंगा कि इसका उत्तर पूर्ण विराम देना है। यद्यपि यह सुनिश्चित करना है कि सुविधा शाखा को ट्रंक के साथ अद्यतित रखा गया है, इसका मतलब है कि ट्रंक से परिवर्तनों में विलय अक्सर और उचित है।
मर्फ़

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

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

1
@ मुख्य रूप से, हां, लेकिन मैं "आकार गैर-तुच्छ है" का अर्थ है "एक पंक्ति से अधिक कुछ भी जो एक सहकर्मी तुरंत देख सकता है वह सही या गलत है"।
फ्रैंक शियरार

3

मुझे लगता है कि आपके द्वारा उपयोग किए जा रहे संस्करण नियंत्रण प्रणाली के आधार पर उत्तर भिन्न हो सकता है: केंद्रीकृत (जैसे तोड़फोड़) या वितरित (जैसे गिट)। मेरे पास वितरित स्रोत नियंत्रण प्रणाली का उपयोग करने के साथ कोई वास्तविक दुनिया का अनुभव नहीं है, इसलिए मेरा जवाब है कि हम तोड़फोड़ के साथ क्या करते हैं।

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

यदि आप शाखा करते हैं, तो मुझे लगता है कि गलती जो मुझे अक्सर दिखाई देती है कि लोग अपनी शाखा को ट्रंक के साथ अद्यतित नहीं रख रहे हैं। आपको अपनी शाखा में ट्रंक से लगातार बदलावों का विलय करना चाहिए, जबकि यह मौजूद है ताकि जब आपने सब कुछ फिर से रिवर्स मर्ज पूरा कर लिया है तो यह काफी तुच्छ है।


2

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

हम लंबे समय तक रहने वाली शाखाओं और ट्रंक-टू-ब्रांच मर्ज होने से बचने की कोशिश करते हैं, क्योंकि इसके लिए सावधानी से बहीखाता की आवश्यकता होती है। इसके बजाय हमारे पास अपेक्षाकृत कम-जीवित शाखाएं हैं जो केवल एक बार ट्रंक में वापस मिल जाती हैं, और जल्द ही हटा दी जाती हैं।

और हमारे पास एक नियम है कि कुछ भी नहीं किया जा सकता है या ट्रंक में विलय हो सकता है जब तक कि कम से कम एक अन्य व्यक्ति परिवर्तनों के माध्यम से नहीं देखता है और उन्हें मंजूरी देता है।


0

SQL सर्वर लोगों की सामान्य टिप्पणी की तरह "यह निर्भर करता है"

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

हां, ऐसा करने के प्रयास के दोहराव की संभावना है। लेकिन कम से कम आप काम का एक निशान बनाएंगे जिसे आप रोलबैक कर सकते हैं यह एक मृत अंत साबित होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.