एंटरप्राइज में Git- आधारित स्रोत नियंत्रण: सुझाए गए उपकरण और अभ्यास?


120

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

लेकिन अब यह काम पर और अनिवार्य रूप से, हमें समस्याएँ आ रही हैं।

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

लेकिन - राजनीतिक कारणों के लिए - हम गिट के साथ फंस गए हैं, भले ही वह इसके लिए क्या करने की कोशिश कर रहा है के लिए बेकार है।

यहाँ कुछ चीजें हैं जो हम देख रहे हैं:

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

हालाँकि, मैंने सुना है कि लोग बड़े विकास संगठनों में सफलतापूर्वक git का उपयोग कर रहे हैं।

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

BTW, मैंने लिंक्डइन पर पहले से ही इस सवाल का एक संस्करण पूछा है, और कोई वास्तविक जवाब नहीं मिला, लेकिन बहुत "गॉश, मुझे यह जानना अच्छा लगेगा!"

अद्यतन: मुझे स्पष्ट करें ...

जहाँ मैं काम करता हूँ, हम git के अलावा और कुछ का उपयोग नहीं कर सकते हैं । यह एक विकल्प नहीं है। हम इससे चिपके हुए हैं। हम मर्क्यूरियल, स्वॉन, बिटकॉइन, विजुअल सोर्स सेफ, क्लियरकेस, पीवीसीएस, एससीएस, आरसीएस, मार्केट, डार्क्स, मोनोटोन, पेरफोर्स, फॉसिल, एक्यूआरवी, सीवीएस, या यहां तक ​​कि ऐप्पल के अच्छे ओल 'प्रोजेक्टर का उपयोग नहीं कर सकते हैं जिन्हें मैंने 1987 में इस्तेमाल किया था। इसलिए जब आप अन्य विकल्पों पर चर्चा करने के लिए स्वागत करते हैं, तो यदि आप git पर चर्चा नहीं करते हैं, तो आपको इनाम मिलने वाला नहीं है।

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


यही कारण है कि stackoverflow.com/questions/2262799/why-not-use-git प्रासंगिक है। क्या राजनीति वास्तव में एक स्टार्टअप में एक समस्या है?
पास्कल थिवेंट

2
मैं राजनीति को किसी भी अनौपचारिक प्रयास के रूप में मानता हूं जिसे संगठनात्मक गतिशीलता का प्रबंधन करने के लिए बनाया जाना चाहिए क्योंकि इसकी कोई औपचारिक प्रणाली नहीं है। इस प्रकार, एक स्टार्टअप में, कई इंटरैक्शन राजनीति हैं क्योंकि किसी के पास औपचारिक प्रणाली विकसित करने का समय नहीं था।
बॉब मर्फी

4
यह बहुत अच्छा सवाल है। हालांकि, मुझे कहना होगा कि मैं थोड़ा ईर्ष्या कर रहा हूं। काश मैं काम पर गिट के साथ "फंस" गया था। : |
डैन मोल्डिंग

2
"हां, मुझे पता है, लिनस ने इसके लिए कभी इरादा नहीं किया।", एहम वह इसे लिनक्स विकसित करने के लिए उपयोग करता है जो वास्तव में कुछ दोस्तों द्वारा नहीं किया जाता है। मुझे लगता है कि आप जो याद कर रहे हैं वह उपकरण नहीं है बल्कि हमले की योजना है या जैसा कि हम इसे कहते हैं, a process... (मुझे उस शब्द से नफरत है)
stefanB

@stefanB: सच है, कर्नेल बिल्कुल एक-दूजे के लिए नहीं है, लेकिन यह एक कॉर्पोरेट स्टार्टअप भी नहीं है, जहां किसी के पास परोपकारी तानाशाह की भूमिका को भरने के लिए बैंडविड्थ नहीं है। :-)
बॉब मर्फी

जवाबों:


65

आम राय के खिलाफ, मुझे लगता है कि DVCS का उपयोग करना उद्यम की सेटिंग में एक आदर्श विकल्प है क्योंकि यह बहुत ही लचीले वर्कफ़्लो को सक्षम करता है। मैं पहले एक DVCS बनाम CVCS का उपयोग करने के बारे में बात करूंगा, सर्वोत्तम प्रथाओं और फिर विशेष रूप से गिट के बारे में।

DVCS बनाम CVCS एक उद्यम के संदर्भ में:

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

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

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

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

वर्कफ़्लो:

लैरी ओस्टरमैन (विंडोज टीम पर काम करने वाले एक माइक्रोसॉफ्ट देव) के पास वर्कफ़्लो के बारे में एक बढ़िया ब्लॉग पोस्ट है जो वे विंडोज टीम में काम करते हैं। सबसे विशेष रूप से उनके पास है:

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

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

हिराचिकल रिपोजिटरी

(यह तस्वीर जोएल स्पोलस्की के hginit.com से चुराई गई है ।)

हालांकि इस बिंदु पर एक बात कही जा सकती है: - भले ही डीवीसीएस बड़ी विलय क्षमता प्रदान करता है, यह निरंतरता एकीकरण का उपयोग करने के लिए एक प्रतिस्थापन नहीं है। यहां तक ​​कि आपके पास लचीलेपन का एक बड़ा सौदा है: ट्रंक रेपो के लिए सीआई, टीम रेपो के लिए सीआई, क्यू एंड ए रेपो आदि।

एक उद्यम संदर्भ में पकड़:

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

  • फिर भी (कृपया मुझे सही करें कि अगर हाल ही में बदल) विंडोज पर कुछ हद तक अपरिपक्व समर्थन अब खिड़कियां है GitHub खिड़कियों ग्राहक , tortoisegit , SourceTree Atlassian से
  • परिपक्व जीयूआई उपकरण का अभाव, कोई प्रथम श्रेणी का नागरिक vdiff / मर्ज उपकरण एकीकरण नहीं है
  • अपने आंतरिक कामकाज के शीर्ष पर बहुत कम स्तर के असंगत इंटरफ़ेस
  • Svn उपयोगकर्ताओं के लिए एक बहुत खड़ी सीखने की अवस्था
  • गिट बहुत शक्तिशाली है और इतिहास को संशोधित करना आसान बनाता है , बहुत खतरनाक अगर आपको नहीं पता कि आप क्या कर रहे हैं (और आप कभी-कभी अगर आपको पता था कि आपको पता था)
  • कोई व्यावसायिक समर्थन विकल्प उपलब्ध नहीं है

मैं यहाँ git बनाम hg flamewar शुरू नहीं करना चाहता, आप पहले ही DVCS में स्विच करके सही कदम उठा चुके हैं। मर्क्यूरियल ऊपर दिए गए कुछ बिंदुओं को संबोधित करता है और मुझे लगता है कि यह उद्यम के संदर्भ में इसलिए बेहतर है:

  • अजगर को चलाने वाले सभी प्लेटफॉर्म समर्थित हैं
  • सभी प्रमुख प्लैटफॉर्म (जीत / लिनक्स / ओएस एक्स) पर ग्रेट जीयूआई उपकरण, प्रथम श्रेणी मर्ज / vdiff उपकरण एकीकरण
  • बहुत सुसंगत इंटरफ़ेस, svn उपयोगकर्ताओं के लिए आसान संक्रमण
  • अधिकांश चीजें कर सकते हैं git भी कर सकते हैं, लेकिन एक क्लीनर अमूर्तता प्रदान करता है। खतरनाक ऑपरेशन हमेशा स्पष्ट होते हैं। उन्नत सुविधाएँ एक्सटेंशन के माध्यम से प्रदान की जाती हैं जिन्हें स्पष्ट रूप से सक्षम होना चाहिए।
  • सेलेनिक से व्यावसायिक सहायता उपलब्ध है।

संक्षेप में, एक उद्यम में डीवीसीएस का उपयोग करते समय मुझे लगता है कि ऐसा उपकरण चुनना महत्वपूर्ण है जो कम से कम घर्षण का परिचय दे। संक्रमण सफल होने के लिए डेवलपर्स (वीसीएस के संबंध में) के बीच भिन्न कौशल पर विचार करना विशेष रूप से महत्वपूर्ण है।


घर्षण को कम करना:

ठीक है, जब से आप वास्तव में स्थिति से चिपके हुए दिखाई देते हैं, आईएमएचओ के पास दो विकल्प बचे हैं। गिट को कम जटिल बनाने के लिए कोई उपकरण नहीं है; Git है जटिल। या तो आप इसका सामना करते हैं या गिट के आसपास काम करते हैं: -

  1. पूरी टीम के लिए git परिचयात्मक पाठ्यक्रम प्राप्त करें। इसमें केवल मूल बातें और कुछ अभ्यास (महत्वपूर्ण!) शामिल होने चाहिए।
  2. मास्टर रेपो को svn में बदलें और "युवा-सितारों" को git-svn दें । यह अधिकांश डेवलपर्स को इंटरफ़ेस का उपयोग करने में आसान बनाता है और आपकी टीम में कमी के अनुशासन की भरपाई कर सकता है, जबकि युवा-सितारे अपने स्वयं के रेपो के लिए गिट का उपयोग करना जारी रख सकते हैं।

सच कहूं तो, मुझे लगता है कि आपको वास्तव में एक उपकरण समस्या के बजाय लोगों की समस्या है। इस स्थिति में सुधार के लिए क्या किया जा सकता है?

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

1
"परोपकारी तानाशाह" की तरह, इस वर्कफ़्लो को इसे काम करने के लिए मानवीय हस्तक्षेप की आवश्यकता प्रतीत होती है, और हमारी स्थिति के लिए एक ही दोष से ग्रस्त है: हमारे पास अपने नियमित काम करने के लिए पर्याप्त बैंडविड्थ नहीं है, स्रोत नियंत्रण के साथ अकेले चलो। इसके अलावा, मुझे स्पष्ट था: हम GIT के साथ STUCK हैं। जब तक मैं एक मुट्ठी शुरू नहीं करना चाहता। :-)
बॉब मर्फी

1
किसी ने उस Microsoft वर्कफ़्लो के बारे में एक लेख में लिखा है, कि एक शाखा से फ़ीचर प्राप्त करने में कई महीने लग सकते हैं, जो सभी की कार्यशील प्रतियों में एकीकृत हो जाता है। यह बहुत दर्दनाक और त्रुटि-प्रवण विलय है।
सैड डेवलपर

@Glorphindale: मैंने इसके बारे में एक लेख में भी पढ़ा है, और नहीं, उनका विलय दर्दनाक नहीं है। वे डीवीसीएस का उपयोग करते हैं और चूंकि वे स्पष्ट रूप से अलग सीमाओं पर काम करते हैं, इसलिए विलय उतना दर्दनाक नहीं है जितना आप सोच सकते हैं।
जोहान्स रुडोल्फ

27

मैं एक बड़े विकास संगठन के लिए एससीएम इंजीनियर हूं, और हमने पिछले वर्ष या उससे अधिक समय से svn में बदलाव किया है। हम इसे केंद्रीकृत तरीके से इस्तेमाल करते हैं।

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

अपनी विशिष्ट चिंताओं में से कुछ के लिए:

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

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


धन्यवाद! यह उपयोगी जानकारी है। क्या आपके पास विभिन्न रिपॉजिटरी में कोड के बीच / निर्भरता है? यदि हां, तो आप रिपॉस के लगातार संस्करण प्राप्त करने का प्रबंधन कैसे करते हैं? क्या दो डेवलपर्स के लिए यह पता लगाने का एक आसान तरीका है कि क्या उन्हें प्रत्येक रेपो के लिए कमिट-ईश के नोटिंग कोड के समान सेट मिला है? BTW, मुझे व्यक्तिगत लिपियों पर नज़र रखने वाले लोगों के बारे में सुनकर बहुत खुशी हुई और ऐसा मैं खुद भी करता हूं, साथ ही नोट्स, टिप्स और ट्रिक्स के "चीटशीट" के साथ।
बॉब मर्फी

हमारे कोड का अधिकांश जावा है, और हम मावेन को अपनी निर्माण प्रणाली के रूप में उपयोग करते हैं, इसलिए हम इंटर-प्रोजेक्ट निर्भरता और संस्करण को संभालने के लिए मावेन का उपयोग करते हैं। हम टैग का व्यापक उपयोग भी करते हैं - प्रत्येक रिलीज़ बिल्ड में एक टैग होता है।
Ebneter 19

मैं स्मार्टगिट का उपयोग करता हूं (नवीनतम संस्करण मर्क्यूरियल के साथ भी काम करता है), और विलय के लिए P4Merge । (cc। @ याकूब) आप G4 और SmartGit दोनों को P4Merge से सीधे कॉल करने के लिए कॉन्फ़िगर कर सकते हैं
बेंजोल

26

हां, मुझे पता है, लिनस ने इसके लिए कभी इरादा नहीं किया।

दरअसल, लिनस का तर्क है कि केंद्रीकृत सिस्टम सिर्फ काम नहीं कर सकता है।

और, तानाशाह-और-लेफ्टिनेंट वर्कफ़्लो में क्या गलत है?

आरेख

याद रखें, गिट एक वितरित प्रणाली है; इसे केंद्रीय की तरह इस्तेमाल करने की कोशिश न करें।

(अद्यतन)

आपकी अधिकांश समस्याएँ दूर हो जाएँगी यदि आप git का उपयोग करने की कोशिश नहीं करते हैं जैसे कि "स्टेरॉयड पर svn" (क्योंकि यह नहीं है)।

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

आमतौर पर इन लोगों को टीम लीड होना चाहिए: प्रत्येक नेता अपनी टीम के काम को एकीकृत करता है और इसे धन्य भंडार में धकेलता है।

इससे भी बेहतर, कोई और (यानी तानाशाह) टीम के नेताओं से खींचता है और धन्य भंडार में उनके परिवर्तनों को एकीकृत करता है।

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

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

जीआईटी पुलिंग करने में इतना समय नहीं लगता है।

git pull A
git pull B
git pull C

गिट मानव समय और ध्यान के लिए स्थानापन्न करता है ; इसलिए यह पहली जगह में लिखा गया था।

  • GUI उपकरण परिपक्व नहीं हैं

गुई उपकरण बुनियादी सामान को अच्छी तरह से संभाल सकते हैं।

उन्नत संचालन के लिए एक कोडर / नीयर मानसिकता की आवश्यकता होती है (जैसे मैं कमांड लाइन से काम करने में सहज हूं)। अवधारणाओं को समझने में थोड़ा समय लगता है, लेकिन यह उतना कठिन नहीं है।

  • कमांड लाइन टूल का उपयोग करना, मर्ज को पेंच करना और किसी और के परिवर्तनों को अनपढ़ करना आसान है

यह तब तक समस्या नहीं होगी जब तक कि आपके पास "केंद्रीय भंडार" के पूर्ण लेखन अभिगम के साथ कई अक्षम डेवलपर्स न हों।

लेकिन, यदि आप अपने वर्कफ़्लो को सेट करते हैं ताकि केवल कुछ लोग (इंटीग्रेटर्स) "धन्य" रिपॉजिटरी को लिखें, तो यह समस्या नहीं होगी।

Git में मर्ज को पेंच करना आसान नहीं है।

जब मर्ज संघर्ष होते हैं, तो गिट स्पष्ट रूप से परस्पर विरोधी रेखाओं को चिह्नित करेगा ताकि आप जान सकें कि कौन से परिवर्तन आपके हैं और जो नहीं हैं।

यह अन्य लोगों के कोड को svn या किसी भी अन्य (नॉन-डीसिटेज्ड) टूल से अलग करना आसान है। वास्तव में, यह इन अन्य उपकरणों के साथ आसान है क्योंकि आप लंबे समय तक "परिवर्तनों पर बैठते हैं" और कुछ बिंदु पर मर्जों को बहुत मुश्किल से प्राप्त कर सकते हैं।

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

Git के साथ, अधिकांश समय कोई मर्ज विरोध नहीं होगा क्योंकि git वास्तव में मर्ज हो सकता है। उस स्थिति में जहां संघर्ष होता है, git स्पष्ट रूप से आपके लिए रेखाओं को चिह्नित करेगा ताकि आप यह जान सकें कि कौन से परिवर्तन आपके हैं और कौन से परिवर्तन अन्य लोगों के हैं।

यदि कोई मर्ज संघर्ष का समाधान करते समय अन्य लोगों के परिवर्तनों को देखता है, तो यह गलती से नहीं होगा: यह या तो इसलिए होगा क्योंकि यह संघर्ष समाधान के लिए आवश्यक था, या क्योंकि वे नहीं जानते कि वे क्या कर रहे हैं।

  • यह प्रति-उपयोगकर्ता रिपॉजिटरी अनुमतियों को वैश्विक रीड-ओनली या रीड-राइट विशेषाधिकारों से परे प्रदान नहीं करता है

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

  • "कुछ भी जाता है" या "परोपकारी तानाशाह" के अलावा अन्य वर्कफ्लो को प्रोत्साहित करना मुश्किल है, अकेले लागू करें

ये समस्याएँ तब दूर हो जाएँगी जब आप git का उपयोग करना बंद कर देंगे जैसे कि यह एक केंद्रीकृत प्रणाली थी।

  • यह स्पष्ट नहीं है कि क्या एक बड़ी रिपॉजिटरी का उपयोग करना बेहतर है (जो हर किसी को सब कुछ गड़बड़ कर देता है) या प्रति-घटक रिपॉजिटरी के बहुत सारे (जो संस्करणों को सिंक्रनाइज़ करने की कोशिश करने वाले सिरदर्द के लिए बनाते हैं)।

निर्णायक कॉल।

आपके पास किस तरह की परियोजनाएं हैं?

उदाहरण के लिए: क्या परियोजना का संस्करण xy प्रोजेक्ट B के बिल्कुल संस्करण wz पर निर्भर करता है, जैसे कि हर बार जब आप प्रोजेक्ट A की xy की जाँच करते हैं, तो आपको प्रोजेक्ट B के wz को चेकआउट करना होगा, अन्यथा यह निर्माण नहीं करेगा? अगर ऐसा है तो मैं प्रोजेक्ट A और प्रोजेक्ट B दोनों को एक ही रिपॉजिटरी में डालूंगा, क्योंकि वे स्पष्ट रूप से एक ही प्रोजेक्ट के दो हिस्से हैं।

यहां सबसे अच्छा अभ्यास अपने मस्तिष्क का उपयोग करना है

  • कई रिपॉजिटरी के साथ, यह भी स्पष्ट नहीं है कि केंद्रीय भंडार से खींचकर किसी अन्य स्रोत को कैसे दोहराया जाए, या ऐसा कुछ किया जाए जैसे कल दोपहर 4:30 तक सब कुछ मिल जाए।

मुझे नहीं पता तुम्हारा क्या मतलब है।


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

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

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

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

2
ओह - मैं वास्तव में hooch की बोतल से झूलते हुए कार्यालय में नहीं घूमता और सभी साथियों को मुट्ठी भेंट करता हूं। माइक फिंक की किंवदंती के लिए यह एक मजाकिया रूपक भ्रम था - विकिपीडिया पर उसकी जाँच करें। हालांकि मैं कार्यालय डोजो के लिए जा रहा है और अपने ही गधा श्रीमती केली, हमारे स्थानीय बच्चों के लाइब्रेरियन जो एक ब्लैक बेल्ट है द्वारा लात मारी के बाद पहनने के लिए कुछ हद तक बदतर पर दिखाने के लिए जाने जाते हैं।
बॉब मर्फी

6

मैं अत्यधिक एंटरप्राइज़ काम के लिए http://code.google.com/p/gerrit/ की सलाह देता हूं । यह आपको एक्सेस कंट्रोल प्लस बिल्ट-इन रिव्यू बेस्ड वर्कफ़्लो देता है। यह किसी भी LDAP सिस्टम के विरुद्ध प्रमाणित होता है। आप इसे हडसन तक हुक कर सकते हैं http://wiki.hudson-ci.org/display/HUDSON/Gerrit+Plugin के साथ , जब आप अभी भी समीक्षा के अधीन हैं, तो आप बदलावों का निर्माण और परीक्षण कर सकते हैं; यह वास्तव में प्रभावशाली सेटअप है।

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


5

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

आपके पास यहाँ समस्याओं का बहुत अलग सेट है:

  • workflows
  • ग्राहक उपकरण
  • सर्वर अभिगम नियंत्रण और एकीकरण

वर्कफ़्लो

हमने सफलतापूर्वक एक केंद्रीय रिपॉजिटरी मोड को अपनाया: हमारे पास हमारे एंटरप्राइज प्रोजेक्ट (5 मिलियन यूजर बेस के लिए एक बड़ा पोर्टल) में एक डी-फैक्टो सेंट्रल रिपॉजिटरी है जो आधिकारिक बिल्ड का उत्पादन करता है, फिर डिलीवरी प्रक्रिया को टाल दिया जाता है (जो, हमारे मामला, परीक्षण के तीन स्तर और दो परिनियोजन से बना है)। प्रत्येक डेवलपर अपने स्वयं के रेपो का प्रबंधन करता है, और हम एक शाखा-प्रति-सुविधा के आधार पर काम करते हैं।

ग्राहक उपकरण

अब कई विकल्प उपलब्ध हैं, यह अब बहुत भीड़भाड़ वाला क्षेत्र है। कई डेवलपर्स बिना किसी अन्य सामान के, Gelli प्लगइन के साथ IntelliJ Idea और Eclipse का सफलतापूर्वक उपयोग कर रहे हैं । साथ ही अधिकांश लिनक्स डेवलपर बिना किसी समस्या के CLI git क्लाइंट का उपयोग कर रहे हैं। कुछ मैक डेवलपर्स सफलतापूर्वक टॉवर गिट का उपयोग कर रहे हैं । कृपया ध्यान दें कि इनमें से कोई भी ग्राहक केंद्रीय भंडार के साथ उपयोगकर्ता को "गड़बड़" करने से नहीं रोक सकता है: सर्वर साइड कंट्रोल mecalism की आवश्यकता है

सर्वर अभिगम नियंत्रण और एकीकरण

यदि आप डेवलपर्स को "गड़बड़" करने से बचना चाहते हैं तो आप रिपॉजिटरी का उपयोग करते हैं, आपको एक समाधान चुनने की आवश्यकता है:

  • हर ऑपरेशन को करने के लिए एक सभ्य वेब व्यवस्थापक इंटरफ़ेस को उजागर करता है
  • आपको उपयोगकर्ता पहचान को लागू करने की अनुमति देता है ("नंगे" गिट रिपॉजिटरी का उपयोग करना किसी और की ओर से प्रतिबद्ध करना बहुत आसान है)
  • आपको ठीक-ठाक सुरक्षा प्रदान करता है (ताकि उदाहरण के लिए आप FORCE-PUSH को रोक सकें और कुछ शाखाओं को केवल कुछ कंपनियों / समूहों के लिए पढ़ सकें)
  • अपने कॉर्पोरेट प्रमाणीकरण प्रणाली (यानी LDAP, Windows ActiveDirectory) के साथ एकीकृत करें
  • आपको पूर्ण ऑडिट प्रदान करता है ( बड़े कॉरपोरेट के लिए SOX अनुपालन कभी-कभी बहुत महत्वपूर्ण होता है)

बहुत सारे रेडी-टू-यूज़ सर्वर साइड सॉल्यूशंस नहीं हैं जो इसकी मदद कर सकते हैं, मेरा सुझाव है कि आप इनमें से किसी एक को देखें:

  • Gitorious : यह बेसिक एक्सेस लेवल सिक्योरिटी प्रदान कर सकता है, लेकिन इसमें बॉक्स के बाहर महीन दाने वाली अनुमतियों का नियंत्रण नहीं होता है, इसलिए आपको शाखा स्तर की अनुमतियों जैसे परिदृश्यों को संभालने के लिए कुछ कोडिंग करनी पड़ेगी। इसमें मौजूदा कॉर्पोरेट प्रमाणीकरण तंत्र के साथ एकीकरण का भी अभाव है
  • GitHub Enterprise: हाल ही में GitHub द्वारा प्रकाशित किया गया है, इसमें आपके कॉर्पोरेट में GitHub की सुविधा है। इसमें SOX अनुपालन और ठीक दाने वाली सुरक्षा का अभाव है
  • गेरिट : यह कॉरपोरेट प्रमाणीकरण प्रणालियों के साथ बढ़िया पीस एक्सेस स्तर सुरक्षा और एकीकरण प्रदान कर सकता है लेकिन इसमें SOX अनुपालन और SSO का अभाव है। इसके अलावा कुछ ऑपरेशन केवल SSH द्वारा CLI के माध्यम से ही किए जा सकते हैं
  • GitEnterprise : यह शाखा स्तर की अनुमति, SSO, SOX अनुपालन, पूर्ण वेब आधारित प्रशासन प्रदान करता है। इसे हाल ही में जेरिट के साथ भी एकीकृत किया गया था, ताकि यह आपको पूर्ण जेरिट उदाहरण भी प्रदान करे

उम्मीद है की यह मदद करेगा!


बस मेरे 2 सेंट ... आप गिटलैब का भी उपयोग कर सकते हैं । यह लगभग gitHub की एक प्रति है, लेकिन कुल मिलाकर मुफ़्त है (और, यदि आपको कुछ नियंत्रक पसंद हैं, तो आप इसे आपके लिए एक स्थानीय / क्लाउड सर्वर पर स्थापित कर सकते हैं)
मैथलाइट

3

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


3

पर उपकरण , MacOS एक्स उपयोगकर्ताओं GitX (http://gitx.frim.nl/) बहुत ही सरल और प्रभावी हैं। दोष यह है कि Git क्लाइंट हुक ($ GIT_ROOT / .git / हुक के तहत वाले) का समर्थन नहीं करता है।

कुल मिलाकर मैं दृढ़ता से एक ऐसे उपकरण को चुनता हूं, जो ठीक-ठाक पहुँच नियंत्रण का समर्थन करता है : - शाखाएँ (विषय-शाखाओं से कड़ी सुरक्षा के साथ स्थिर रिलीज़ शाखाओं को अलग करने के लिए जो अधिक चपलता और लचीलेपन की आवश्यकता होती हैं) - पहचान प्रवर्तन (लेखक / कमिटर) )। यह SOX - git कमांड प्रतिबंध - ऑडिट-ट्रेल के लिए कुंजी है। यह SOX के लिए कुंजी है

उन विशेषताओं के साथ मैंने सफलतापूर्वक उपयोग किया है:

  1. जेरिट कोड की समीक्षा (http://code.google.com/p/gerrit/)
  2. GitEnterprise (http://gitenterprise.com)
  3. CollabNet TeamForge (http://www.collab.net/gotgit), पर्दे के पीछे गेरिट 2.1.8 का उपयोग करता है

PS एसओएक्स और सीएमएमआई अनुपालन को कम मत समझो : कई बार आपके पास सीमित विकल्प होते हैं जो आपकी कंपनी एंटरप्राइज पॉलिसीज़ ऑन सिक्योरिटी द्वारा निर्धारित होती है।

उम्मीद है की यह मदद करेगा।

लुका।


2

हमने हाल ही में svn से git में स्विच किया है। चूँकि git-daemon msysgit के साथ काम नहीं करता है इसलिए हमने gitosis के साथ लिनक्स सर्वर पर एक केंद्रीय रिपॉजिटरी दृष्टिकोण का विकल्प चुना।

मास्टर को पेंच करने की संभावना को खत्म करने के लिए हमने बस इसे रोक दिया। इसके बजाय हम उन सभी रिलीज़ को तैयार करते हैं जो उन शाखाओं को मर्ज करके परीक्षण के लिए चयनित होती हैं और मर्ज को टैग करती हैं। यदि यह परीक्षण पास करता है तो प्रतिबद्ध को एक संस्करण के साथ टैग किया जाता है और उत्पादन में लगाया जाता है।

इसे संभालने के लिए हमारे पास रिलीज़ मैनेजर की एक घूर्णन भूमिका है। रिलीज मैनेजर परीक्षण के लिए तैयार होने से पहले प्रत्येक शाखा की समीक्षा करने के लिए जिम्मेदार है। फिर जब उत्पाद उल्लू तय करता है कि नए परीक्षण के लिए एक साथ अनुमोदित शाखाओं को बंडल करने का समय है, रिलीज प्रबंधक मर्ज करें।

हमारे पास 2'nd स्तर की हेल्प डेस्क की घूर्णन भूमिका भी है और कम से कम हमारे लिए वर्कलोड ऐसा है कि एक ही समय में दोनों भूमिकाएँ करना संभव है।

एक मास्टर नहीं होने के लाभ के रूप में, रिलीज मैनेजर के माध्यम से जाने के बिना परियोजना में किसी भी कोड को जोड़ना संभव नहीं है, इसलिए हमने सीधे पता लगाया कि परियोजना से पहले चुपचाप कितना कोड जोड़ा गया था।

समीक्षा प्रक्रिया शाखा के मालिक द्वारा रिव्यूबोर्ड में अंतर को प्रस्तुत करने और एक हरे रंग के पोस्ट-इसे शाखा नाम के साथ व्हाइटबोर्ड पर डालते हुए शुरू होती है (हमारे पास कानबन आधारित वर्कफ़्लो है) "समीक्षा के लिए" के तहत, या यदि यह एक पूर्ण उपयोगकर्ता का हिस्सा है। कहानी, पूरे कहानी कार्ड को "समीक्षा के लिए" स्थानांतरित करें और उस पर पोस्टिट डालें। Relase manager वह है जो कार्ड्स को आगे बढ़ाता है और इसके बाद "टेस्ट के लिए तैयार" होता है और फिर उत्पाद के मालिक का चयन कर सकता है कि अगले टेस्ट रिलीज में किन लोगों को शामिल किया गया है।

मर्ज करते समय रिलीज़ मैनेजर यह भी सुनिश्चित करता है कि मर्ज कमिट में एक समझदार प्रतिबद्ध संदेश है, जिसका उपयोग उत्पाद स्वामी के लिए चैंज में किया जा सकता है।

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


1

मैं एक "आप विचार किया है" पोस्ट में भी जोड़ देंगे।

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

उस शीर्ष पर, उत्कृष्ट प्रलेखन और कुछ जो आपके उद्यम को खुश करेगा: वाणिज्यिक सहायता उपलब्ध।


1
जैसा कि मैंने उल्लेख किया है, हम जीआईटी के साथ फंस गए हैं।
बॉब मर्फी

1
  • Github FI की तरह एक सभ्य वेब इंटरफेस स्थापित करें
  • लोगों को सहज रखने के लिए एक अपेक्षाकृत केंद्रीकृत मॉडल (शुरू में) से चिपके रहें।
  • प्रत्येक साझा शाखा के लिए एक सतत एकीकरण निर्माण चलाएँ ।
  • वैश्विक git config विकल्पों का एक अच्छा सेट साझा करें।
  • अपने शेल में गिट को एकीकृत करें, बैश पूरा होने के साथ, और वर्तमान शाखा के साथ एक संकेत दें।
  • एक मर्ज उपकरण के रूप में IntelliJ के Git एकीकरण का प्रयास करें।
  • सुनिश्चित करें कि आप .itignore को उचित समझें।

1

अंक 3 और 4 (प्रति-उपयोगकर्ता, प्रति-अनुभाग, प्रति-शाखा अनुमतियाँ) के बारे में, जिओलाइट पर एक नज़र है (प्रो गिट बुक में शामिल: http://progit.org/book/ch4-8.html )।

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


1

GUI: फिलहाल, TortoiseGit v1.7.6 अधिकांश दैनिक कार्यों के लिए ठीक होना चाहिए। लॉग, कमिट, पुश, पुल, फ़ेच, डिफ, मर्ज, ब्रांच, चेरी-पिक, रीबेस, टैग, एक्सपोर्ट, स्टैश, ऐड सबमॉडल, आदि ... x64 को सपोर्ट करता है


1

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


0

अधिक gitosis या gitolite लेकिन खुले स्रोत से collabrative विकास के लिए अनुकूल है Gitorious । यह रेल एप्लिकेशन पर एक रूबी है जो रिपॉजिटरी और विलय के प्रबंधन को संभालती है। यह आपकी कई समस्याओं का समाधान करना चाहिए।


0

Git निजी शाखाएँ बनाने की अनुमति देता है। यह डेवलपर्स को अक्सर कमिट करने के लिए प्रोत्साहित करता है ताकि छोटे कमिट में संशोधन टूट जाए। जब डेवलपर अपने परिवर्तनों को प्रकाशित करने के लिए तैयार होता है, तो वह केंद्रीय सर्वर पर जाता है। वह जरूरत पड़ने पर अपने कोड को सत्यापित करने के लिए पूर्व-प्रतिबद्ध स्क्रिप्ट का उपयोग कर सकता है।


गिट के चेरी-पिक वरिष्ठ कर्मचारियों के लिए डेवलपर्स द्वारा किए गए बदलाव को आंशिक रूप से स्वीकार करने के लिए एक महत्वपूर्ण विशेषता है। वरिष्ठ कर्मचारी डेवलपर की शाखा से चेरी-पिक कर सकते हैं। यदि आप धक्का देने से पहले कुछ गलत पाते हैं, तो "मौजूदा कमिट्स को संशोधित करना" कदम में से एक है।
अलंकृत करें

0

NXP एक सामान्य प्लेटफ़ॉर्म (एंटरप्राइज़-स्केल पर) के साथ Git और तोड़फोड़ का प्रबंधन कर रहा है, जो पारंपरिक सॉफ़्टवेयर प्रोजेक्ट्स के साथ Android मोबाइल विकास को एकीकृत करता है: http://www.youtube.com/watch?v=QX5wn0igv7Q

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