नियोक्ता-विशिष्ट परिवर्तनों के साथ एक ओपन सोर्स प्रोजेक्ट के साथ काम करने के लिए सबसे अच्छा गिट वर्कफ़्लो क्या है?


11

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

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

ऐसा लगता है कि मुझे ऐसा करने के लिए मर्ज का उपयोग करना चाहिए, ताकि मैं समान सामग्री के साथ अलग-अलग कमिट नहीं बनाऊं, लेकिन मुझे यकीन नहीं है कि कंपनी-विशिष्ट कमिट को छोड़कर और एक उचित वर्कफ़्लो रखते हुए ऐसा कैसे करें।

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

क्या मैं लंबे समय तक योगदान के लिए एक उचित वर्कफ़्लो कर रहा हूं? क्या कोई अलग वर्कफ़्लो सुझा सकता है जो बेहतर हो सकता है, और यह बेहतर क्यों है?


1
आप किसी अन्य शाखा पर कुछ काम आसानी से जमा कर सकते हैं - रिबेट git-scm.com/book/en/Git-Branching-Rebasing का उपयोग करके । जब तक आप पहले प्रतिबद्ध होते हैं, तब तक आप किसी अन्य शाखा पर कमिट कर सकते हैं, फिर कमेंट को हटाने के लिए अपनी वर्तमान शाखा को रीसेट कर सकते हैं।
आर्टब्रिस्टल

जवाबों:


2

यहां एक रणनीति है जो आपके लिए काम कर सकती है:

2 निजी git रेपो बनाएं, जिसमें एक रेपो कंपनी के काम के लिए और दूसरा जनरल होने के नाते (मैं वापस कमिट करना चाहूंगा) रेपो।

इस प्रणाली को काम करने के लिए, आपको यह करने की आवश्यकता है (जिसे मैं सबसे महत्वपूर्ण रणनीति मानता हूं): परिभाषित करें कि "सामान्य" क्या है और इसका उपयोग समुदाय में अन्य सभी के द्वारा किया जा सकता है

इस परिभाषा के होने से, आप यह पता लगा सकते हैं कि आप क्या वापस करेंगे और आपको क्या करने की आवश्यकता नहीं है।

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

अब जब आप जानते हैं कि आप समुदाय के लिए क्या करने जा रहे हैं, तो आप इसके लिए समर्पित रेपो में अधिकांश "गिव-बैक" कार्य कर सकते हैं। तब आप बस उस रेपो को अपने काम-आधारित रेपो पर कांटा करते हैं और उसके ऊपर कोई भी कार्य-विशिष्ट कार्य करते हैं।

मुझे संदेह है कि आप "गिव-बैक" रेपो में बहुत अधिक समय बिताएंगे, इसलिए भविष्य में उस परियोजना का उपयोग करने वाले लोगों के लिए मूल्यवान टिप्पणियां, आदि (शायद प्रलेखन भी) प्रदान करना याद रखें।

मेरा यह भी मानना ​​है कि गिट आप जितना सोचते हैं उससे बहुत अधिक कर सकते हैं। मैंने इस वीडियो को Vimeo: http://vimeo.com/46010208 पर देखा और उसने बहुत सारी निराला बातों को समझाने का शानदार काम किया।

मेरी रणनीति केवल एक ही नहीं है, लेकिन यह निश्चित रूप से आपके लिए एक शुरुआती बिंदु हो सकता है जो आपको विशेष रूप से सूट करता है।


1

ओपन-सोर्स कोडबेस की प्रकृति पर निर्भर करता है और आपको इसमें बदलाव करके क्या हासिल करने की जरूरत है, आप अपनी चिंताओं को अलग करके बहुत अधिक लाभ प्राप्त कर सकते हैं। परियोजना के अपने कांटे में, केवल उन चीजों को जोड़ें जो आप मूल में वापस योगदान करना चाहते हैं। आपको अपनी कंपनी का काम करने की अनुमति देने के लिए हुक या विस्तार बिंदु जोड़ें जो साझा नहीं किए जाएंगे।

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

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