पैच सबमिट करना

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

आवश्यक शर्तें

शुरू करने के लिए, सुनिश्चित करें कि आपने निम्न कार्य किया है:

साधन

  • रेपो और गिट के बारे में विवरण के लिए, स्रोत नियंत्रण उपकरण पृष्ठ देखें।
  • Android ओपन सोर्स समुदाय में विभिन्न भूमिकाओं के बारे में जानकारी के लिए, प्रोजेक्ट भूमिकाएँ पृष्ठ देखें।
  • Android प्लेटफ़ॉर्म में कोड योगदान करने के बारे में लाइसेंसिंग जानकारी के लिए, लाइसेंस पृष्ठ देखें।

योगदानकर्ताओं के लिए

सर्वर के साथ प्रमाणीकरण

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

रेपो शाखा शुरू करना

आपके द्वारा किए जाने वाले प्रत्येक परिवर्तन के लिए, संबंधित Git रिपॉजिटरी के भीतर एक नई शाखा शुरू करें:

04494सीसी370

आप एक ही रिपॉजिटरी में एक ही समय में कई स्वतंत्र शाखाएँ शुरू कर सकते हैं। शाखा NAME आपके कार्यक्षेत्र के लिए स्थानीय है और इसे गेरिट या अंतिम स्रोत ट्री में शामिल नहीं किया गया है।

अपना परिवर्तन करना

स्रोत फ़ाइलों को संशोधित करें, और अपने परिवर्तनों को मान्य करें।

इन आदेशों के साथ अपने स्थानीय भंडार में परिवर्तन करें:

git add -A
git commit -s

विवरण बदलें

  • पंक्ति 1: शीर्षक

    एक-पंक्ति सारांश प्रदान करें ( अधिकतम ५० वर्ण )

    इस प्रारूप का उपयोग विभिन्न प्रदर्शनों के लिए Git और Gerrit द्वारा किया जाता है। यह आपके प्रतिबद्ध संदेश का सबसे महत्वपूर्ण, सबसे सघन हिस्सा है। आपके द्वारा बदले गए क्षेत्र का वर्णन करने के लिए उपसर्गों का उपयोग करने पर विचार करें, इसके बाद इस प्रतिबद्धता में आपके द्वारा किए गए परिवर्तन का विवरण, जैसे कि यह जिसमें ui उपसर्ग के रूप में है:

    ui: Removes deprecated widget

  • पंक्ति 2: खाली

    इस लाइन को हमेशा खाली रखें।

  • पंक्ति 3: शरीर

    इस लाइन से शुरू करते हुए एक लंबा विवरण लिखें।

    इसे अधिकतम 72 वर्णों पर हार्ड-रैप करना चाहिए। वर्णन करें कि परिवर्तन किस समस्या का समाधान करता है, और कैसे। हालांकि नई सुविधाओं को लागू करते समय यह वैकल्पिक है, यह बाद में दूसरों के लिए बहुत उपयोगी है यदि वे इस परिवर्तन का उल्लेख करते हैं, खासकर डिबगिंग के लिए।

    किसी भी धारणा या पृष्ठभूमि की जानकारी का एक संक्षिप्त नोट शामिल करें जो महत्वपूर्ण हो सकता है जब कोई अन्य योगदानकर्ता इस सुविधा पर काम करता है।

एक अद्वितीय परिवर्तन आईडी और आपका नाम और ईमेल, जो repo init दौरान प्रदान किया जाता है, स्वचालित रूप से आपके प्रतिबद्ध संदेश में जुड़ जाते हैं।

यहाँ एक उदाहरण प्रतिबद्ध संदेश है:

Line 1, Headline - a short description

Line 3, Body - Add the detailed description of your patch here. Use as many lines
as needed. You can write an overall description, then list specifics.

I6e3c64e7a:Added a new widget.
I60c539a8f:Fixed the spinning image.
अच्छे प्रतिबद्ध विवरण (उदाहरण के साथ) के बारे में ब्लॉग पढ़ने के लिए, क्रिस बीम्स द्वारा एक गिट प्रतिबद्ध संदेश कैसे लिखें देखें।

Gerrit . पर अपलोड कर रहा है

अपने व्यक्तिगत इतिहास में अपना परिवर्तन करने के बाद, इसे इस आदेश के साथ गेरिट पर अपलोड करें:

repo upload

यदि आपने एक ही रिपॉजिटरी में कई शाखाएँ शुरू की हैं, तो आपको यह चुनने के लिए कहा जाएगा कि किन शाखाओं को अपलोड करना है।

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

समीक्षा का अनुरोध

आपके द्वारा गेरिट में अपने परिवर्तन अपलोड करने के बाद, पैच की समीक्षा की जानी चाहिए और उपयुक्त कोड स्वामियों द्वारा अनुमोदित किया जाना चाहिए। OWNERS फ़ाइलों में कोड स्वामियों का पता लगाएँ।

उपयुक्त कोड स्वामियों को खोजने और उन्हें अपने परिवर्तन के लिए समीक्षकों के रूप में जोड़ने के लिए, इन चरणों का पालन करें।

  1. अपने पैच में फ़ाइलों के लिए कोड स्वामियों की सूची देखने के लिए Gerrit UI में SUGGEST OWNERS लिंक का चयन करें।

    Gerrit . में मालिकों के लिंक का सुझाव दें
    चित्र 1. Gerrit . में मालिकों के लिंक का सुझाव दें
  2. अपने पैच के लिए समीक्षकों के रूप में सूची से कोड स्वामियों को जोड़ें।

अपने पैच में फ़ाइलों की स्थिति निर्धारित करने के लिए, पैच में फ़ाइलों के आगे निम्न चिह्नों की जाँच करें।

  • (चेकमार्क आइकन): कोड स्वामी द्वारा स्वीकृत
  • (क्रॉस आइकन): कोड स्वामी द्वारा अनुमोदित नहीं
  • (घड़ी आइकन): कोड स्वामी द्वारा लंबित अनुमोदन
चित्र 2. कोड स्वामी की स्वीकृति स्थिति दिखाने वाले आइकन वाली फ़ाइलों का उदाहरण

एक प्रतिस्थापन पैच अपलोड करना

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

git add -A
git commit --amend

जब आप संशोधित पैच अपलोड करते हैं, तो यह गेरिट और आपके स्थानीय गिट इतिहास दोनों में मूल को बदल देता है।

समन्वयन विरोधों का समाधान

यदि स्रोत ट्री में अन्य पैच सबमिट किए गए हैं जो आपके साथ विरोध करते हैं, तो अपने पैच को स्रोत रिपॉजिटरी के नए HEAD के शीर्ष पर रीबेस करें। ऐसा करने के लिए, यह आदेश चलाएँ:

repo sync

repo sync कमांड स्रोत सर्वर से अपडेट प्राप्त करता है, फिर आपके HEAD को नए रिमोट HEAD पर स्वचालित रूप से रीबेस करने का प्रयास करता है।

यदि स्वचालित रीबेस असफल होता है, तो मैन्युअल रीबेस निष्पादित करें।

repo rebase

रिबेस संघर्ष से निपटने के लिए एक अन्य उपकरण git mergetool । जब आपने परस्पर विरोधी फ़ाइलों को सफलतापूर्वक मर्ज कर दिया है, तो यह आदेश चलाएँ:

git rebase --continue

स्वचालित या मैन्युअल रीबेस पूर्ण होने के बाद, अपना रिबेस्ड पैच सबमिट repo upload लिए repo upload चलाएं।

सबमिशन स्वीकृत होने के बाद

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

अपस्ट्रीम परियोजनाओं के लिए

Android कई अन्य ओपन सोर्स प्रोजेक्ट्स का उपयोग करता है, जैसे कि Linux कर्नेल और WebKit, जैसा कि Android सॉफ़्टवेयर प्रबंधन में वर्णित है। external/ अंतर्गत रहने वाली अधिकांश परियोजनाओं के लिए, परिवर्तन अपस्ट्रीम करें, फिर Android अनुरक्षकों को नई अपस्ट्रीम रिलीज़ के बारे में सूचित करें जिसमें आपके परिवर्तन शामिल हैं।

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

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

एंड्रॉइड कर्नेल

सभी परिवर्तन अपस्ट्रीम करना पसंद करते हैं। सामान्य मार्गदर्शन के लिए, Android कर्नेल योगदान दिशानिर्देशों का पालन करें।

आईसीयू4सी

ICU-TC होम पेज पर ICU4C प्रोजेक्ट में external/icu4c सभी परिवर्तन करें। अधिक के लिए आईसीयू बग्स और फीचर अनुरोध सबमिट करना देखें।

एलएलवीएम/क्लैंग/कंपाइलर-आरटी

external/llvm कंपाइलर इंफ्रास्ट्रक्चर पेज पर external/llvm -संबंधित प्रोजेक्ट्स ( external/clang , external/compiler-rt , external/llvm ) में सभी बदलाव करें।

मक्षो

mirbsd.org डोमेन (वहां सबमिट करने के लिए कोई सदस्यता आवश्यक नहीं है) या लॉन्चपैड पर miros-mksh को एक ईमेल भेजकर external/mksh पर MirBSD कॉर्न शेल प्रोजेक्ट में सभी परिवर्तन करें।

ओपनएसएसएल

ओपनएसएसएल पेज पर external/openssl पर ओपनएसएसएल प्रोजेक्ट में सभी बदलाव करें।

वी 8

V8 अंक पृष्ठ पर external/v8 पर V8 प्रोजेक्ट में सभी परिवर्तन सबमिट करें। विवरण के लिए V8 में योगदान करना देखें।

वेबकिट

WebKit पृष्ठ पर external/webkit पर WebKit प्रोजेक्ट में सभी परिवर्तन करें। WebKit बग दर्ज करके प्रक्रिया प्रारंभ करें। बग में, प्लेटफ़ॉर्म और OS फ़ील्ड के लिए Android उपयोग केवल तभी करें जब बग Android के लिए विशिष्ट हो। एक प्रस्तावित सुधार जोड़े जाने और परीक्षण शामिल किए जाने के बाद बग्स को समीक्षकों का ध्यान आकर्षित करने की अधिक संभावना है। विवरण के लिए वेबकिट में योगदान कोड देखें।

ज़्लिब

zlib होम पेज पर external/zlib पर zlib प्रोजेक्ट में सभी परिवर्तन करें।