2010-10-09 9 views
9

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

  1. डेवलपर अपने स्वयं के शाखा करने के लिए प्रतिबद्ध स्थानीय स्तर पर
  2. डेवलपर अपने दूरदराज के, जहां एक सतत निर्माण प्रणाली यह और एक अन्य की जाँच करता है के लिए प्रतिबद्ध धक्का देता है,:

    मुझे आप कैसे हमारी कंपनी यह होता है की एक उदाहरण देता हूँ डेवलपर समीक्षा

  3. यदि समीक्षा/निर्माण पास होता है, तो प्रतिबद्धता एक क्यूए शाखा में विलय हो जाती है (यदि यह विफल हो जाती है, समीक्षा/निर्माण पास तक अधिक प्रतिबद्धता होती है)
  4. यदि प्रतिबद्धता QA विफल हो जाती है, तो एक वापसी प्रतिबद्ध इसे
  5. 01 प्राप्त करने के लिए बनाया गया है
  6. पर्याप्त क्यूए काम करने के बाद, हमारी मास्टर शाखा काम करती है (क्यूए शाखा इसे बंद कर देती है इसलिए कोई विलय की आवश्यकता नहीं होती है)
  7. समय-समय पर शाखाओं को शाखा शाखा से लिया जाता है, और "जंगली में" "। समस्याओं यहां पाए जाते हैं, तो एक वापस लाएं प्रतिबद्ध फिर से एक रिहाई के बाद कोड
  8. दूर करने के लिए इस्तेमाल किया जाएगा, डेवलपर्स मास्टर शाखा पर अपनी शाखाओं rebase
(दोनों अपने पिछले प्रतिबद्ध और अन्य डेवलपर्स के उन लोगों के लिए हो रही)

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

तो, यदि आपने गिट का उपयोग करने वाली कई कंपनियों में काम किया है (या इससे भी बेहतर, यदि आप किसी तरह के परामर्शदाता हैं जिन्होंने गिट सेटअप को देखा है), तो क्या आप साझा कर सकते हैं: विभिन्न कंपनियां गिट शाखाओं को कैसे सेट करती हैं (और उनके बीच चलती है) विकास के विभिन्न चरणों को सुविधाजनक बनाने के लिए ... सभी संभवतः कम से कम परेशान होने की कोशिश करते समय? मुझे यकीन है कि कुछ सामान्य पैटर्न होना चाहिए ... लेकिन मुझे नहीं पता कि वे क्या हैं।

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

+0

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

+0

... और अन्य मुद्दे भी हैं, लेकिन जैसा कि मैंने कहा है कि मैं यहां विशिष्ट समाधान की तलाश नहीं कर रहा हूं, बस संभावित विकल्पों की कुछ समझ। – machineghost

+0

कृपया इसे मुख्य पोस्ट में जोड़ें, न कि टिप्पणियों में। –

उत्तर

6

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

  • मास्टर हमेशा उत्पादन में क्या है इसकी एक प्रति है। जब कोड जारी हो जाता है, तो वर्तमान शाखा मास्टर को तेजी से अग्रेषित हो जाती है, और एक टैग जोड़ा जाता है ताकि रिलीज समय पर चिह्नित हो और यदि हमें कभी भी आवश्यकता हो तो हम कोड को पकड़ सकते हैं।
  • डेवलपर्स के पास काम करने की आजादी है कि जहां तक ​​वे अपनी शाखाओं के लिए जाते हैं, हालांकि फीचर शाखाओं के लिए, हमारे पास आमतौर पर प्रत्येक सुविधा के लिए एक शाखा होती है और कई डेवलपर्स उस सुविधा के काम में साझा करने के लिए उस शाखा से और उसमें विलय करते हैं।
  • जब रिलीज उम्मीदवार के लिए इसका समय होता है, तो एक आरसी_XXX शाखा बनाई जाती है, और फीचर शाखाएं जो काफी दूर हैं, सभी इसमें विलय हो जाती हैं। इसके बाद इसका परीक्षण किया जाता है, और बग फिक्स इस से ब्रांच किए जाते हैं।
  • जब सब कुछ कहा और किया जाता है, तो आरसी_XXक्स शाखा उत्पादन के लिए जारी हो जाती है, और इसके बाद कुछ दिनों के लिए "चिपक जाती है", हम इसे मास्टर को बढ़ावा देते हैं और नई फीचर शाखाएं इसके आधार पर बंद होती हैं।

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

+0

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

1

क्या इस बारे में (मैं क्या डेवलपर के लिए अपने मशीन पर अनदेखी कर रहा हूँ):

  • प्रत्येक डेवलपर एक स्वीकार किए जाते हैं पैच शाखा (क्यूए यहाँ करता है), है कि पिछले मास्टर चौकी से आधारित है है (नया प्रत्येक रिहाई के लिए शाखा)
  • हर डेवलपर एक लंबित पैच शाखा वह कि लगातार स्वीकार कर लिया पैच शाखा (लगातार शाखा)
  • एक बार क्यूए सभी डेवलपर्स के लिए किया जाता है के खिलाफ रिबेस है में करता है, सभी को स्वीकार कर लिया पैच शाखाओं मास्टर में विलय कर रहे हैं है
  • नई क्यूए शाखाएं बनाई गई हैं और सभी डेवलपर्स फिर से
+0

मेरा से अधिक सटीक उत्तर। +1 – VonC

+0

यह एक दिलचस्प विकल्प है; धन्यवाद (अभी भी अन्य विकल्पों को देखने के लिए देख रहे हैं :-))। – machineghost

0

"रिलीज के बाद, डेवलपर्स अपनी शाखाओं को फिर से दबाते हैं": ouch ...

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

सहयोगी सहकर्मी सहयोग संभव है लेकिन requires setting up a bare repo और local protocol के रूप में कुछ अनुशासन को हल करें।

+0

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

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