تصف هذه الصفحة العملية الكاملة لإرسال تصحيح إلى مشروع Android مفتوح المصدر (AOSP) ، بما في ذلك كيفية طلب مراجعة وتتبع تغييراتك باستخدام Gerrit .
المتطلبات الأساسية
للبدء ، تأكد من قيامك بما يلي:
- تهيئة بيئة البناء الخاصة بك
- تم تنزيل المصدر
- إنشاء كلمة مرور باستخدام مولد كلمة المرور.
موارد
- للحصول على تفاصيل حول Repo و Git ، راجع صفحة أدوات التحكم في المصدر .
- للحصول على معلومات حول الأدوار المختلفة داخل مجتمع Android Open Source ، راجع صفحة أدوار المشروع .
- للحصول على معلومات حول ترخيص المساهمة في نظام Android الأساسي ، راجع صفحة التراخيص .
للمساهمين
المصادقة مع الخادم
إذا كنت تشارك عنوان IP مع مستخدمين آخرين ، فيمكن تشغيل الحصص حتى لأنماط الاستخدام العادية. يمكن أن يحدث هذا ، على سبيل المثال ، عندما يقوم العديد من المستخدمين بمزامنة عملاء جدد من نفس عنوان IP خلال فترة زمنية قصيرة. يستخدم الوصول المصادق حصة منفصلة لكل مستخدم ، بغض النظر عن عنوان IP. للقراءة حول تنشيط الوصول المصادق عليه ، راجع استخدام المصادقة .
بدء فرع ريبو
لكل تغيير تنوي إجراؤه ، ابدأ فرعًا جديدًا داخل مستودع 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.
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.
-
Select the SUGGEST OWNERS link in the Gerrit UI to see a list of code owners for the files in your patch.
Figure 1. Suggest owners link in Gerrit 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

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
عند تحميل التصحيح المعدل ، فإنه يحل محل النسخة الأصلية على Gerrit وفي سجل Git المحلي.
حل تعارضات المزامنة
إذا تم إرسال تصحيحات أخرى إلى شجرة المصدر التي تتعارض مع شجرتك ، فأعد تحديد موقع التصحيح الخاص بك أعلى HEAD
الجديد لمستودع المصدر. للقيام بذلك ، قم بتشغيل هذا الأمر:
repo sync
يقوم أمر repo sync
بجلب التحديثات من الخادم المصدر ، ثم يحاول إعادة تعيين HEAD
تلقائيًا على HEAD
البعيد الجديد.
إذا لم تنجح عملية إعادة التأسيس التلقائية ، فقم بإجراء عملية إعادة تحديد قاعدة البيانات يدويًا.
repo rebase
أداة أخرى للتعامل مع تعارض rebase هي git mergetool
. عند دمج الملفات المتعارضة بنجاح ، قم بتشغيل هذا الأمر:
git rebase --continue
بعد اكتمال إعادة التأسيس التلقائي أو اليدوي ، شغّل repo upload
لإرسال التصحيح المعاد تأسيسه.
بعد الموافقة على التقديم
بعد أن يمر الإرسال خلال عملية المراجعة والتحقق ، يقوم Gerrit تلقائيًا بدمج التغيير في المستودع العام. يمكن للمستخدمين الآخرين تشغيل repo sync
لسحب التحديث إلى عملائهم المحليين.
لمشاريع المنبع
يستخدم Android عددًا من المشاريع الأخرى مفتوحة المصدر ، مثل Linux kernel و WebKit ، كما هو موضح في إدارة برامج Android . بالنسبة لمعظم المشاريع الموجودة تحت external/
، قم بإجراء التغييرات في المنبع ، ثم أبلغ مسؤولي صيانة Android بالإصدار الأولي الجديد الذي يحتوي على تغييراتك.
يمكنك أيضًا تحميل تصحيحات تؤدي إلى تتبع إصدار جديد في المنبع. لاحظ أنه قد يكون من الصعب إجراء هذه التغييرات إذا تم استخدام المشروع على نطاق واسع داخل Android ، مثل معظم المشروعات الكبيرة المذكورة أدناه ، والتي تتم ترقيتها عادةً مع كل إصدار.
حالة خاصة واحدة مثيرة للاهتمام هي Bionic. الكثير من الكود هناك من BSD ، لذا ما لم يكن التغيير إلى الكود الجديد في Bionic ، يرجى إجراء إصلاح في المنبع ، ثم سحب ملف جديد بالكامل من BSD المناسب.
Android Kernel
قم بإجراء كل التغييرات في المنبع. للحصول على إرشادات عامة ، اتبع إرشادات مساهمة Android Kernel وصفحة Develop Kernel Code for GKI .
وحدة العناية المركزة
قم بإجراء جميع التغييرات على مشروع وحدة العناية المركزة في external/icu
( icu4c/
و icu4j/
folder) على الصفحة الرئيسية لـ ICU-TC . راجع إرسال أخطاء وحدة العناية المركزة وطلبات الميزات للمزيد. أضف التصنيف "android" إلى جميع طلبات Jira الأولية.
CLDR
تأتي معظم البيانات اللغوية في وحدة العناية المركزة من مشروع Unicode CLDR . أرسل جميع الطلبات في اتجاه المنبع وفقًا للمساهمة في CLDR وأضف التصنيف "android".
LLVM / Clang / Compiler-rt
قم بإجراء جميع التغييرات على المشاريع المتعلقة بـ LLVM ( external/clang
، external/compiler-rt
، external/llvm
) في صفحة البنية الأساسية للمجمع في LLVM .
مكش
قم بإجراء جميع التغييرات على مشروع MirBSD Korn Shell على موقع external/mksh
إما عن طريق إرسال بريد إلكتروني إلى miros-mksh
على مجال mirbsd.org
(لا يلزم الاشتراك للإرسال هناك) أو في Launchpad .
OpenSSL
أجرِ جميع التغييرات على مشروع OpenSSL على external/openssl
في صفحة OpenSSL .
V8
قم بإرسال جميع التغييرات إلى مشروع V8 في external/v8
على صفحة إصدار V8 . انظر المساهمة في V8 للحصول على التفاصيل.
WebKit
قم بإجراء جميع التغييرات على مشروع WebKit في external/webkit
على صفحة WebKit . ابدأ العملية عن طريق تسجيل خطأ WebKit . في الخطأ ، استخدم Android
لحقول النظام الأساسي ونظام التشغيل فقط إذا كان الخطأ خاصًا بنظام Android. من المرجح أن تتلقى الأخطاء انتباه المراجعين بعد إضافة الإصلاح المقترح وتضمين الاختبارات. راجع "مساهمة التعليمات البرمجية في WebKit" للحصول على التفاصيل.
زليب
قم بإجراء جميع التغييرات على مشروع zlib في external/zlib
على صفحة zlib الرئيسية .