2013-08-12 8 views
85

हमने हाल ही में गिटलैब का उपयोग करना शुरू कर दिया है।गिट-फ्लो बनाम जिथब-प्रवाह के पेशेवरों और विपक्ष क्या हैं?

वर्तमान में एक "केंद्रीकृत" कार्यप्रवाह का उपयोग कर।

हम GitHub प्रवाह में जाने पर विचार कर रहे हैं, लेकिन मुझे यकीन है कि बनाना चाहते हैं।

पेशेवरों और git-flow बनाम github-flow की विपक्ष क्या हैं?

उत्तर

95

के रूप में "GitHub workflows inside of a company" पर अपने लेख में, GitMinutes प्रकरण 17 में चर्चा Nicholas Zakas द्वारा:

Git-flow Git में परिवर्तन है कि कि प्रबंधन के लिए विन्सेंट Driessen द्वारा बनाई गई और कुछ Git extensions के साथ किया गया था के प्रबंधन के लिए एक प्रक्रिया है बहे।
गिट-फ्लो के पीछे सामान्य विचार एक अलग उद्देश्य के लिए कई अलग-अलग शाखाएं होती हैं, प्रत्येक एक अलग उद्देश्य के लिए: master, develop, feature, release, और hotfix। इससे पहले कि यह अंत में जारी है
सुविधा या बग विकास की प्रक्रिया दूसरे में एक शाखा से बहती है।

उत्तरदाताओं में से कुछ संकेत दिया कि वे सामान्य रूप में git-flow का उपयोग करें।
कुछ git-flow साथ बाहर शुरू कर दिया है और यह से दूर चले गए।

दूर जाने का प्राथमिक कारण यह है कि git-flow प्रक्रिया निरंतर (या निरंतर) परिनियोजन मॉडल में निपटने के लिए कठिन है।
सामान्य भावना यह है कि git-flow अधिक पारंपरिक रिलीज मॉडल में उत्पादों के लिए अच्छी तरह से काम करता है, जहां रिलीज हर कुछ हफ्तों में किया जाता है, लेकिन जब आप दिन में एक बार या अधिक जारी करते हैं तो यह प्रक्रिया काफी कम हो जाती है।

संक्षेप में:

यथासंभव सरल एक मॉडल के साथ प्रारंभ, और एक अधिक जटिल मॉडल की ओर ले जाने (GitHub प्रवाह की तरह हो जाता है) आप करने की आवश्यकता है।


आप में एक सरल कार्यप्रवाह का एक दिलचस्प चित्रण, GitHub-Flow के आधार पर देख सकते हैं: मुख्य तत्व होने के साथ
"A simple git branching model",:

  1. master हमेशा चाहिए तैनाती योग्य रहें।
  2. फ़ीचर शाखाओं (पुल-अनुरोध + विलय) के माध्यम से किए गए सभी परिवर्तन
  3. विवादों से बचने/हल करने के लिए पुन: विश्राम; master

https://a248.e.akamai.net/camo.github.com/9783623eba280ba5ace8b9e63842be52af2f0546/687474703a2f2f7374617469632e62656e65742e61692f736b697463682f666c6f772d32303133303932362d3139333431392e706e67

25

मैं एक वर्ष से अधिक है और इसके ठीक के लिए Git प्रवाह मॉडल का उपयोग किया गया है करने के लिए विलय।

लेकिन यह वास्तव में इस बात पर निर्भर करता है कि आपका एप्लिकेशन कैसे विकसित और तैनात किया जाएगा।

यह तब अच्छा काम करता है जब आपके पास एक ऐसा अनुप्रयोग है जिसमें धीमी विकास/तैनाती प्रवाह हो।

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

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

कम से कम एक जीयूआई है जो मैक और विंडोज SourceTree के लिए गिट-फ्लो का समर्थन करता है।

इन दिनों, मैं अपनी सादगी और प्रबंधन के लिए आसान होने के कारण, गिटहब प्रवाह की ओर झुक रहा हूं। इसके अलावा, की वजह से "जल्दी तैनात अक्सर तैनात" ...

आशा इस मदद करता है

+0

+1। मैं आपसे सहमत हुँ। – VonC

+2

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

39

कोई चांदी की गोली कार्यप्रवाह जहां हर कोई पालन करना चाहिए, के बाद से सभी मॉडलों के उप इष्टतम हो रहा है। ऐसा कहकर, आप नीचे दिए गए बिंदुओं के आधार पर अपने सॉफ्टवेयर के लिए उपयुक्त मॉडल का चयन कर सकते हैं; उत्पादन में

एकाधिक संस्करण - का उपयोग Git-flow

अपने कोड के उत्पादन में एक से अधिक संस्करण आप उपयोग कर सकते हैं (आपरेटिंग सिस्टम, कार्यालय संकुल, कस्टम अनुप्रयोगों, आदि जैसे यानी ठेठ सॉफ्टवेयर उत्पादों) आ रही है Git प्रवाह। मुख्य कारण यह है कि अगले संस्करण को विकसित करते समय आपको उत्पादन में पिछले संस्करणों का लगातार समर्थन करने के लिए की आवश्यकता है।

उत्पादन सरल सॉफ्टवेयर में एकल संस्करण - का उपयोग Github-flow

अपने कोड को हर समय उत्पादन में केवल एक संस्करण (यानी वेब साइटों, वेब सेवाओं, आदि) चल रहा है, तो आप उपयोग कर सकते हैं GitHub प्रवाह। मुख्य कारण यह है कि आपको डेवलपर के लिए जटिल चीजों की आवश्यकता नहीं है। एक बार डेवलपर एक फीचर खत्म कर देता है या बगफिक्स को तुरंत को उत्पादन संस्करण में प्रचारित करता है।

एकल उत्पादन में संस्करण लेकिन बहुत जटिल सॉफ्टवेयर - का उपयोग Gitlab-flow

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

+3

सूची में "गिटडज़-फ्लो"/"गिट डीएमजेड फ्लो" जोड़ना: https://gist.github.com/djspiewak/9f2f91085607a4859a66 –

+1

संदर्भित कंपनियां एक ट्रंक आधारित प्रणाली का उपयोग करती हैं। http://paulhammant.com/2014/01/08/googles-vs-facebooks-trunk-based-development/ – PatrickWalker

+1

गिट डीएमजेड प्रवाह गिटफ्लो और डीएमजेड शाखा के समान है विकास शाखा की तरह है। इसलिए मुझे इसके बारे में कुछ खास नहीं लगता है। –

संबंधित मुद्दे