यदि मैं एकमात्र डेवलपर हूं तो क्या मेरे स्वयं के रेपो पर पुल अनुरोधों का उपयोग करने का कोई उद्देश्य है?


38

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

अब जब मैं अपनी शाखा GitHub पर धकेलता हूं, तो मेरे पास वह खंड है जहां मेरे पास दो बटन हैं: Pull Requestऔर Compareउस शाखा के नाम के साथ जिसे मैंने धक्का दिया था। मैं Compareबटन के उद्देश्य को समझता हूं, लेकिन मुझे नहीं लगता कि मैं अपने रेपो पर पुल अनुरोध क्यों बनाना चाहता हूं।

क्या कोई मुझे समझा सकता है कि मैं ऐसा क्यों करूंगा? यदि मैं एकमात्र डेवलपर हूं तो क्या मेरे स्वयं के रेपो पर पुल अनुरोध करना उपयोगी है?

जवाबों:


28

कई (शायद सबसे) व्यक्तिगत डेवलपर्स अपने दम पर काम कर रहे हैं, पुल अनुरोधों को बनाना संभवत: सार्थक नहीं है। हालांकि, मैं इसे करने के लिए कम से कम एक संभावित कारण के बारे में सोच सकता हूं:

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

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

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


10

खींचे गए अनुरोध बनाए जाते हैं, ताकि कोई व्यक्ति कार्य की समीक्षा कर सके, टिप्पणियां कर सके, सुझाव दे सके, संपादन कर सके या फिर अनुरोध कर सके और फिर कोड को मास्टर में विलय कर सके।

आपके मामले में कोई आप ही है।

एकमात्र डेवलपर के रूप में आपको अभी भी अपने स्वयं के काम की समीक्षा करनी चाहिए, इसे फिर से भरना और तैयार होने पर इसे मर्ज करना होगा।

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

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

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

इसलिए आपको शाखाओं में काम करना चाहिए और जब तक आप पूरी शाखा को मर्ज करने का निर्णय नहीं लेते हैं, तब तक सीधे मास्टर के लिए प्रतिबद्ध न हों

ये दिशानिर्देश हैं - और नियम नहीं - पालन करने के लिए। मैं जानबूझकर उन्हें कभी-कभी तोड़ता हूं। उदाहरण के लिए, कल मैंने एक टाइपो फिक्स मास्टर करने के लिए किया।


3

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

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


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

@ मार्को-फ़िसेट इसे उत्तर नहीं बदलना चाहिए। मुझे यह भी निश्चित रूप से पता नहीं है कि आप कौन से रिक्वेस्ट बटन को खींच रहे हैं ..
डेविड काउडन

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

0

पुल अनुरोधों का उपयोग आमतौर पर कोड समीक्षा या उपयोगकर्ताओं द्वारा परियोजना के अपने कांटे के साथ योगदान के लिए किया जाएगा - एक परियोजना पर एक एकल डेवलपर के लिए जो मुझे वास्तव में एक उद्देश्य नहीं दिखता है।


0

इसका कारण यह है कि, यह है कि यह सुनिश्चित करने का एक सुविधाजनक तरीका है कि सभी स्वचालित जांच पास हो जाएं (यह संकलित करता है, इसमें सही प्रारूपण है, इकाई परीक्षण पास हैं ...)।

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

आम तौर पर, यह परिवर्तनों को पूरा करने के लिए हुक को जोड़ने का एक तरीका है। टेस्ट एक उदाहरण हैं; @ जॉन ने एक और उदाहरण के रूप में रिलीज नोट्स बनाने का उल्लेख किया।


-2

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

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

जीथब पर कोड डाल रहे हैं, इसका कारण यह होगा कि आप कोड को फोर्किंग के लिए उपलब्ध कराएँ, और अनुरोधों को खींचें। आप कभी नहीं जानते कि यह कब होगा, और अपने सह-डेवलपर्स इतिहास को बनाए रखना एक बड़ा धन होगा।


यह केवल बनाए गए बिंदुओं को दोहराने के लिए लगता है और बहुत समय पहले शीर्ष उत्तर
gnat

1
मैं असहमत हूं। जबकि शीर्ष उत्तर मुख्य रूप से एकल बनाम साझा भंडार के बारे में बात कर रहा है, पुल के बारे में चर्चा प्रक्रियात्मक और सूचना साझाकरण पर अधिक केंद्रित है। मेरी बात लगातार इतिहास बनाए रखने के आसपास है। कुछ और जानकारी के लिए मूविंगफास्ट .io/articles/git-force-pushing देखें । यदि कोई मास्टर का एक कांटा या क्लोन का उपयोग कर रहा है और आप इतिहास को फिर से लिखते हैं, तो उनके द्वारा संदर्भित माता-पिता गायब हो सकते हैं।
मैथ्यू टिप्लेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.