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