मुझे यकीन नहीं है कि मैं स्वचालित रूप से विलय करने के लिए गिट पर भरोसा कर सकता हूं। यहां एक परिदृश्य है।मैं गिट विलय पर भरोसा कैसे कर सकता हूं?
मास्टर में एक कार्यक्रम बनाएँ:
MOVE 0 TO I.
A.
PERFORM X-PROC.
IF I IS EQUAL TO 25 THEN GO TO A.
डेवलपर 1 एक शाखा बनाता है और पाता है वहाँ एक बग है कि: अनंत लूप। उन्होंने कहा कि यह ठीक करता है:
MOVE 0 TO I.
A.
ADD 1 TO I.
PERFORM X-PROC.
IF I IS EQUAL TO 25 THEN GO TO A.
इस बीच डेवलपर 2 एक शाखा बनाता है और अपने हिसाब से बग समाधान:
MOVE 0 TO I.
A.
PERFORM X-PROC.
ADD 1 TO I.
IF I IS EQUAL TO 25 THEN GO TO A.
दोनों डेवलपर के लिए अपने कोड का परीक्षण और यह सही लगता है। दोनों गुरु के विलय:
MOVE 0 TO I.
A.
ADD 1 TO I.
PERFORM X-PROC.
ADD 1 TO I.
IF I IS EQUAL TO 25 THEN GO TO A.
अनंत लूप वापस आ गया है।
ऐसा लगता है कि यह समस्या किसी भी तरह के वितरित विकास पर्यावरण में अक्सर होती है। जब मैंने इसका परीक्षण किया, तो गिट ने मर्ज विवाद की रिपोर्ट नहीं की। कभी-कभी यह समस्या लंबे समय तक ज्ञात नहीं जा सकती थी। एक रिग्रेशन टेस्ट इसे ढूंढना चाहिए, लेकिन गिट में रिग्रेशन टेस्ट विलय कर दिए जाते हैं, इसलिए हम उन पर भरोसा नहीं कर सकते हैं।
मैं इसके बारे में क्या कर सकता हूं? क्या मुझे हर विलय के बाद कोड पढ़ने की ज़रूरत है?
टेस्ट सूट/यूनिट परीक्षण वर्कलोड को कम करने के लिए एक शानदार टूल हैं यदि आपके पास गर्गेंट्यून विलय हो रहा है (जो आपको आमतौर पर नहीं होना चाहिए) - लेकिन सुरक्षा की झूठी भावना में न पड़ें और स्वच्छता की उपेक्षा न करें- अपने विलय की जांच करें, सिर्फ इसलिए कि आपके परीक्षण सभी पास हो जाते हैं! –
एक तकनीक जिसका उपयोग मैं विलय को कम दर्दनाक बनाने के लिए करता हूं, वह दूसरी शाखा के साथ विलय से पहले और बाद में शाखा का अंतर लेना है, और उसके बाद उस भिन्नता (भिन्नता प्रोग्राम का उपयोग करके) में किए गए परिवर्तनों के अंतर के साथ तुलना करें दूसरी शाखा यदि diffs के बीच कोई अंतर नहीं है, तो मुझे अधिक विश्वास हो सकता है कि विलय को नहीं जोड़ा गया था। –
धन्यवाद NevikRehnel और @cupcake - मैं सैनिटी जांच विलय के लिए सभी की रणनीतियों को प्यार या सुनूंगा! –