Gerrit कोड की समीक्षा, या Github का कांटा और पुल मॉडल?


64

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

किसी के लिए, जिनके पास कम से कम दोनों के साथ थोड़ा अनुभव है, प्रत्येक के पेशेवरों / विपक्ष क्या हैं, और जो एक टीम आधारित परियोजना के लिए बेहतर होगा जो सामुदायिक विकास की संभावना को छोड़ना चाहता है?

जवाबों:


84

गेरिट और गिटहब के वर्कफ्लोज़ के बीच प्रमुख अंतर यह है कि बदलाव कैसे किए जाते हैं।

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

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

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

गेरिट का फायदा Git के साथ गहरा रिश्ता है। Gitub Pull के अनुरोध Git के मानक डेटा मॉडल से काफी दूर हैं जिन्हें पुल अनुरोध बनाने के लिए Github के वेब UI या इसके मालिकाना API का उपयोग करना चाहिए। परिवर्तन बनाने और अद्यतन करने के लिए जेरिट का इंटरफ़ेस ही गिट प्रोटोकॉल है।


8
धन्यवाद मार्टिन, यह एक दिलचस्प जवाब है। मैं थोड़ी देर के लिए जेरिट को देखने का अर्थ रखता हूं, लेकिन मुझे लगता है कि मैं इसे पूरा करूंगा। यदि यह संपादन इतिहास को प्रोत्साहित करता है और यह कहता है कि मुझे इससे कोई लेना-देना नहीं है। * 8 '(
मार्क बूथ

15
बस स्पष्ट होने के लिए (मैं अपने कार्यस्थल पर अक्सर गेरिट का उपयोग करता हूं), मार्टिन यहां क्या कहता है, "गेरिट ... गिट वर्कफ्लोज़ को प्रोत्साहित करता है ... जैसे कि पहले प्रतिबद्ध करना और इसे फिर से आगे बढ़ाना, या कमिट्स के बढ़ते सेट को स्क्वीज़ करना। .. एक भी कमिट "बिल्कुल सही है। मेरी स्पष्टता यह है कि @ मार्कबूत की "संपादन इतिहास" के बारे में टिप्पणी मार्टिन ने नहीं कही है। संशोधन करना (जबकि गेरिट पर अभी भी, और अभी तक मूल / मास्टर में विलय नहीं हुआ है) "संपादन इतिहास" में शामिल नहीं है। वास्तव में, यह वर्कफ़्लो महान काम करता है। मार्क बूथ के इतिहास के 'बुरे' संपादन से तात्पर्य है संपादित किए गए इतिहास को मूल / गुरु पर फिर से धकेलना।
22

2
स्पष्टीकरण @likethesky के लिए धन्यवाद, लेकिन मेरे पास 'संपादन इतिहास' की अधिक शाब्दिक व्याख्या है, और जहां तक ​​मेरा सवाल है, कुछ भी जिसके परिणामस्वरूप ऐसे परिवर्तन होते हैं जिनमें ऐसी सामग्री होती है जो आपने स्पष्ट रूप से नहीं किया था, वह है 'संपादन इतिहास'। मुझे एहसास है कि यह एक बल्कि व्याख्या है और जो कुछ अन्य लोगों का पालन करते हैं। * 8 ')
मार्क बूथ

2
काफी उचित। :-) मुझे यकीन नहीं है कि मैं समझता हूँ कि "बदलावों से आपका मतलब है जिसमें ऐसी सामग्री है जो आपने स्पष्ट रूप से नहीं की है," इसलिए pls। विस्तृत ... मेरा मानना ​​है कि आप यह नहीं कह रहे हैं कि आप कभी भी अस्थायी (स्थानीय, या दूरस्थ शाखाओं के माध्यम से टीम के सदस्यों के बीच साझा) प्रतिबद्ध नहीं करते हैं, जैसे "WIP: हमने जिस आर्क मुद्दे पर चर्चा की, उसे हल करने का प्रयास" उस कार्य के लिए एक अंतिम प्रतिबद्ध संदेश के रूप में "मदद 123: रिजेक्टेड और हॉरिज़ॉन्टल स्केलिंग सहजता बढ़ाने के लिए एक्सवाईजेड को रिफैक्टेड एक्सवाईजेड" कहा गया है, जो अधिक सहायक स्क्वैश / संशोधन है। लेकिन वैसे भी, निश्चित रूप से आप किसी भी तरह से गिट का उपयोग करने का विकल्प चुन सकते हैं जो आपको खुश करता है!
इसी तरह से जेथ

7
यह एक शानदार जवाब है। जोड़ने के लिए, मैंने पाया है कि GitHub का पुल अनुरोधों को छोटा, अधिक पुनरावृत्त करता है और अक्सर बहुत अधिक वर्णनात्मक गिट लॉग के साथ समाप्त होता है जो न केवल कार्य उत्पाद बल्कि कार्य प्रक्रिया को दर्शाता है। गेरिट के कोड की समीक्षा बड़े, अधिक पॉलिश किए गए कमिट के साथ बहुत क्लीनर रिपॉजिटरी इतिहास (बहुत, बहुत कम वास्तविक मर्ज कमिटमेंट) को बढ़ावा देती है।
टॉपर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.