क्या उचित शिष्टाचार है और GitHub वर्कफ़्लो की सिफारिश की जाती है, साथ ही साथ अपस्ट्रीम रेपो से योगदान करने और बदलने के लिए?


21

मैं सामान्य रूप से GitHub और VCS में नया हूं। मैं वर्षों से विभिन्न भाषाओं में प्रोग्रामिंग कर रहा हूं, लेकिन मैंने हमेशा कस्टम प्रोजेक्ट्स (कोई सार्वजनिक रिलीज) पर एकल काम नहीं किया है। मैंने हाल ही में एक jQuery UI विजेट का उपयोग करना शुरू कर दिया है जिसे मैंने GitHub से एक परियोजना में डाउनलोड किया है जिस पर मैं काम कर रहा हूं। रेपो अब मूल लेखक द्वारा बनाए नहीं रखा गया है। एक अन्य कांटा ने कुछ मूल पुल अनुरोधों को शामिल किया है। यह वह है जिससे मैंने कांटा लगाया।

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

मैं अभी भी जीआईटी और गिटहब सीख रहा हूं और मैं हर चीज के बारे में जानने का सबसे अच्छा तरीका जानने की कोशिश कर रहा हूं। मैंने विभिन्न अवधारणाओं / कार्यों के बारे में (यहाँ, SO, GitHub हेल्प पेज, प्रो Git) पढ़ने की बहुत कोशिश की है: वर्कफ़्लोज़, मर्जिंग, पुल अनुरोध, चेरी पिकिंग, रिबासिंग, ब्रांचिंग। मेरा ग्रे मामला तैर रहा है और मुझे ऐसा करने की ज़रूरत है ताकि मैं समझ सकूँ कि मैंने क्या पढ़ा है।

मुख्य मुद्दे:

  1. मुझे लगता है कि मैंने (कहीं) पढ़ा है कि आप एक बार में एक शाखा पर केवल एक पुल अनुरोध कर सकते हैं। तो क्या इसका मतलब है कि मेरे पास प्रत्येक बग के लिए एक अलग शाखा होनी चाहिए और फिर प्रत्येक के लिए एक अलग पुल अनुरोध करना चाहिए?

  2. मैं व्हॉट्सएप के मुद्दों को साफ करना चाहता हूं और मुझे यह पढ़ते हुए याद आता है कि एक अलग कमिट में ऐसा करना सबसे अच्छा है। क्या मुझे अपने गुरु या एक अलग शाखा में ऐसा करना चाहिए? मैं कुछ बहुत तुच्छ के लिए एक पुल अनुरोध नहीं करना चाहता , लेकिन अगर मैं शाखाओं में बंटने से पहले व्हाट्सएप परिवर्तन करता हूं, तो क्या यह बग फिक्स के लिए पुल अनुरोध को प्रभावित करेगा? कुछ कांटों ने व्हॉट्सएप को साफ किया और इसने प्रभावी रूप से काफी बेकार बना दिया।

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

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

  5. मुख्य फ़ाइल के शीर्ष पर रीडमी फ़ाइल और डॉकब्लॉक को बदलने के बारे में शिष्टाचार क्या है? क्या परिवर्तन करना, मेरा नाम जोड़ना, मेरे रेपो और डेमो में लिंक जोड़ना, मूल डेमो से लिंक हटाना ठीक है (क्योंकि मेरा कांटा मूल के साथ असंगत होने के कारण समाप्त हो जाएगा)? बेशक, मैं मूल लेखक का नाम और लाइसेंस जानकारी छोड़ दूंगा। रिकॉर्ड के लिए, यह एमआईटी लाइसेंस के तहत लाइसेंस प्राप्त है।

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

जवाबों:


15
  1. सही: पुल-रिक्वेस्ट आपकी रिपॉजिटरी की एक शाखा से जुड़ी होती है। यदि आप शाखा को संशोधित करते हैं, तो आप तब भी संशोधित कर रहे हैं जो आप एक पुल-अनुरोध के रूप में प्रस्तुत कर रहे हैं।

    तो हाँ, आपको प्रति बग फिक्स के लिए एक शाखा (और पुल-अनुरोध) बनाना होगा। यह एक के साथ शुरू करने और यह देखने के लिए बुद्धिमान हो सकता है कि अनुरक्षक कैसे उस पर प्रतिक्रिया करता है, बाकी काम करने से पहले। खुला स्रोत एक स्वाभाविक सामाजिक प्रक्रिया है।

  2. क्या अपने खाली स्थान के परिवर्तन के लिए एक पुल अनुरोध करना! किसी ऐसे व्यक्ति के रूप में बोलते हुए, जो कभी-कभी एक अनुचर होता है, मुझे इस प्रकार के पुल-रिक्वेस्ट से प्यार है: मैं या तो उन्हें मंजूरी देता हूं या नहीं, और उन्हें प्रक्रिया में बहुत कम समय लगता है।

    आप जिस चीज में भाग सकते हैं, वह यह है कि अनुचर आपके व्हाट्सएप परिवर्तन से सहमत नहीं है! तो, खबरदार ..

  3. हम्म .. यह स्पष्ट नहीं है कि आप यहां क्या हासिल करने की कोशिश कर रहे हैं। यह ओवर-डॉक्यूमेंटेशन जैसा लगता है न कि किसी विचार का अच्छा - शायद आप स्पष्ट कर सकते हैं कि आप ऐसा क्यों करना चाहते हैं?

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

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

  6. आप जीआईटी के साथ अपने (अपने स्थानीय, अभी तक प्रकाशित नहीं) इतिहास को फिर से लिख सकते हैं! Git rebase कमांड सीखें - यह एक मुख्य कारण है जो मुझे git से प्यार है। यह (बल) एक बहुत बुरा विचार है (साझा) पुन: लिखित कमेटी / इतिहास को साझा भंडार (उदाहरण के लिए) पर धकेलना। यह तब रिपॉजिटरी के साथ पेंच होगा जो अन्य डेवलपर्स के पास है - उन्हें आपके (पुन: लिखित इतिहास) परिवर्तन को खींचते समय कठिन काम करना होगा।

[# 6: धन्यवाद @toxalot!]


# 6 के लिए, हाँ आप इतिहास को फिर से लिख सकते हैं, लेकिन केवल स्थानीय इतिहास। एक बार जब इसे सार्वजनिक रेपो में धकेल दिया जाता है, तो इतिहास को फिर से लिखना एक बहुत बुरा विचार है।
टॉक्सालोट 17
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.