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

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

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

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

संसाधन

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

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

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

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

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

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

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.

Making your change

Modify the source files, and validate your changes.

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.

Uploading 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.

Requesting 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

Uploading 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

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

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

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

repo sync

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

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

repo rebase

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

git rebase --continue

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

प्रस्तुत करने के बाद स्वीकृत है

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

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

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

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

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

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

अपस्ट्रीम में सभी परिवर्तन करें। सामान्य मार्गदर्शन के लिए, Android कर्नेल योगदान दिशानिर्देशों और GKI पृष्ठ के लिए कर्नेल कोड विकसित करें का पालन करें।

आईसीयू

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

सीएलडीआर

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

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

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

mksh

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

ओपनएसएसएल

OpenSSL पृष्ठ पर external/openssl पर OpenSSL प्रोजेक्ट में सभी परिवर्तन करें।

वी 8

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

वेबकिट

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

zlib

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