पैच सबमिट करें

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

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

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

संसाधन

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

गिट कॉन्फ़िगर करें

गेरिट का उपयोग करने के लिए, आपका ईमेल एक पंजीकृत Google खाते से संबद्ध होना चाहिए। पंजीकृत Google खाते से जुड़े नाम और ईमेल पते के साथ Git को कॉन्फ़िगर करने के लिए निम्नलिखित कमांड चलाएँ:

git config --global user.name Your Name
git config --global user.email your_email@gmail.com
    

सर्वर से प्रमाणित करें

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

एक रेपो शाखा प्रारंभ करें

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

repo start NAME .

You can start several independent branches at the same time in the same repository. The branch NAME is local to your workspace and isn't included either on Gerrit or in the final source tree.

Make your change

Modify the source files, and test your changes.

For any changes made, follow License header best practices.

Commit your change

Commit the changes to your local repository with these commands:

git add -A
git commit -s

विवरण बदलें

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

    एक पंक्ति का सारांश प्रदान करें ( अधिकतम 50 अक्षर)

    इस प्रारूप का उपयोग 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.
To read a blog about good commit descriptions (with examples), see How to Write a Git Commit Message by Chris Beams.

Upload to Gerrit

After you commit your change to your personal history, upload it to Gerrit with this command:

repo upload

If you started multiple branches in the same repository, you're prompted to select which ones to upload.

After a successful upload, Repo provides you with the URL of a new page on Gerrit. Click the link that Repo gives you to view your patch on the review server, add comments, or request specific reviewers for your patch.

Request a review

After you've uploaded your changes to Gerrit, the patch must be reviewed and approved by the appropriate code owners. Locate code owners in OWNERS files.

To find the appropriate code owners and add them as reviewers for your change, follow these steps.

  1. Select the SUGGEST OWNERS link in the Gerrit UI to see a list of code owners for the files in your patch.

    suggest owners link in Gerrit
    Figure 1. Suggest owners link in Gerrit
  2. Add code owners from the list as reviewers for your patch.

To determine the status of the files in your patch, check for the following icons next to the files in the patch.

  • (checkmark icon): Approved by code owner
  • (cross icon): Not approved by code owner
  • (clock icon): Pending approval by code owner
Figure 2. Example of files with icons showing code owner approval status

Upload a replacement patch

Suppose a reviewer looked at your patch and requested a small modification. You can amend your commit within Git, which results in a new patch on Gerrit that has the same change ID as the original.

git add -A
git commit --amend

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

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

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

repo sync

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

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

repo rebase

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

git rebase --continue

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

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

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

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

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

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

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

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

सभी परिवर्तन अपस्ट्रीम में करें. सामान्य मार्गदर्शन के लिए, एंड्रॉइड कर्नेल योगदान दिशानिर्देशों और जीकेआई पेज के लिए कर्नेल कोड विकसित करें का पालन करें।

आईसीयू

आईसीयू-टीसी होम पेज पर external/icu ( icu4c/ और icu4j/ फ़ोल्डर्स) में आईसीयू प्रोजेक्ट में सभी बदलाव करें। अधिक जानकारी के लिए आईसीयू बग और फ़ीचर अनुरोध सबमिट करना देखें। सभी अपस्ट्रीम जीरा अनुरोधों में "एंड्रॉइड" लेबल जोड़ें।

सीएलडीआर

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

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

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

mksh

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

ओपनएसएसएल

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

वी 8

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

वेबकिट

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

zlib

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