توضّح هذه الصفحة العملية الكاملة لإرسال تغيير في الرمز إلى "المشروع المفتوح المصدر لنظام Android" (AOSP)، بما في ذلك كيفية طلب إجراء مراجعة وتتبُّع التغييرات.
يعتمد AOSP على Gerrit، وهو نظام مراجعة رموز برمجية على الويب للمشاريع التي تستخدم Git.
توقيع اتفاقيات ترخيص المساهمين
قبل المساهمة بأي تغييرات على الرموز البرمجية في AOSP، يجب قراءة اتّفاقيات التراخيص والمخطّطات الرئيسية للمشاركين وتوقيع إحدى الاتفاقيات التالية:
- بصفتك مساهمًا فرديًا يقدّم مساهمات بالنيابة عنك فقط، عليك توقيع اتفاقية ترخيص المساهم الفردي.
- بصفتك موظفًا في شركة، تأكَّد من أنّ شركتك قد وقّعت على اتفاقية ترخيص المساهمين من الشركات التي تفوّضك بتقديم مساهمات نيابةً عنها.
بدء فرع
لكلّ تغيير في الرمز تريد إجراؤه، اتّبِع الخطوات التالية:
ابدأ فرعًا جديدًا ضمن مستودع Git ذي الصلة. الفروع ليست نسخة من الملفات الأصلية، بل هي مؤشر إلى عملية إرسال محددة، ما يجعل إنشاء الفروع المحلية والتبديل بينها عملية سهلة. من خلال استخدام الفروع، يمكنك تحديد التغييرات عن بعضها. شغِّل هذا الأمر لبدء فرع:
repo start BRANCH_NAME
يمكنك بدء عدة فروع مستقلة في الوقت نفسه في المستودع نفسه. الفرع BRANCH_NAME هو فرع محلي في مساحة العمل ولا يتم تضمينه في Gerrit أو في شجرة المصدر النهائية. تكون الفروع أيضًا خاصة بالمشروع الذي تعمل عليه، لذا إذا كنت بحاجة إلى تغيير الملفات في مشاريع مختلفة كجزء من التغيير نفسه، ستحتاج إلى فرع في كل مشروع تغيّر فيه الملفات.
(اختياري) تأكَّد من إنشاء الفرع:
repo status .
من المفترض أن يظهر لك الفرع الذي تم إنشاؤه حديثًا. مثلاً:
project frameworks/native/ branch mynewbranch
إجراء التغيير واختباره
اتّبِع الخطوات التالية لإجراء التغيير واختباره:
لضمان استخدام أحدث قاعدة بيانات، يمكنك مزامنة قاعدة البيانات بأكملها:
repo sync
إذا واجهت أي تعارضات أثناء المزامنة، راجِع الخطوات من 2 إلى 4 في مقالة حلّ تعارضات المزامنة.
ابحث عن الرمز المطلوب تغييره. للعثور على الرمز، ننصحك باستخدام بحث الرموز على Android. يمكنك استخدام أداة "بحث رمز Android" لعرض رمز المصدر في AOSP كما هو موضّح عند استخدامه. لمزيد من المعلومات، يُرجى الاطّلاع على البدء في استخدام ميزة "بحث الرموز البرمجية". لعرض كل الرمز البرمجي في فرع
main
ضمن البحث عن الرموز البرمجية في Android، انتقِل إلىhttps://cs.android.com/android/platform/superproject/main
.تعديل الملفات المصدر أو إضافتها في ما يتعلّق بأي تغييرات تم إجراؤها:
حدِّد ما إذا كنت بحاجة إلى استخدام علامات إطلاق الميزات، وإذا كان الأمر كذلك، نفِّذها في الرمز الجديد.
اتّبِع أفضل الممارسات الواردة في مقالة تضمين رؤوس التراخيص.
بالنسبة إلى رمز Java، اتّبِع نمط رمز Java في AOSP للمشاركين.
بعض أجزاء AOSP مكتوبة بلغة Kotlin (
.kt
)، ويمكنك استخدام Kotlin في أجزاء من النظام الأساسي مكتوبة بلغة Kotlin. لمزيد من المعلومات حول لغة Kotlin في Android، يُرجى الاطّلاع على دليل أسلوب Kotlin المخصّص لمطوّري تطبيقات Android ودليل التشغيل التفاعلي بين Kotlin وJava. للحصول على إرشادات أكثر تفصيلاً حول لغة Kotlin، يُرجى الاطّلاع على موقع لغة Kotlin الإلكتروني.عند كتابة واجهات برمجة التطبيقات، اتّبِع إرشادات Android API. استخدِم هذه الإرشادات للاطّلاع على السياق الذي تستند إليه قرارات واجهات برمجة التطبيقات في Android. تتحقّق شركة Metalava من صحة الإضافات والتعديلات على واجهات برمجة تطبيقات النظام الأساسي.
إعداد التغيير وتأكيده
التسجيل هو الوحدة الأساسية للتحكّم في المراجعات في Git، ويتكوّن من لقطة شاشة لبنية الدليل ومحتوى الملفات للمشروع بأكمله. اتّبِع الخطوات التالية لحفظ التغيير:
يُسجِّل Git التغييرات التي تجريها تلقائيًا، ولكنه لا يتتبّعها. لتوجيه Git إلى تتبُّع التغييرات، عليك وضع علامة على هذه التغييرات أو وضعها في مرحلة معيّنة لدمجها في عملية تسجيل. شغِّل هذا الأمر لطرح التغيير:
git add -A
يتتبّع هذا الأمر التغييرات التي أجريتها على أي ملفات.
استخدِم الملفات في منطقة الإعداد واحفظها في ملفاتك المحلية أو احفظها:
git commit -s
يتم تلقائيًا فتح محرِّر نصوص ويُطلب منك تقديم رسالة تأكيد.
قدِّم رسالة التزام بالتنسيق التالي:
السطر 1: العنوان قدِّم ملخّصًا في سطر واحد للتغيير (50 حرفًا كحدّ أقصى). ننصحك باستخدام البادئات لوصف الجزء الذي أجريت تغييرات عليه، متبوعًا بوصف للتغيير الذي أجريته في هذا الإصدار، مثل المثال التالي الذي يتضمّن تغييرًا في واجهة المستخدم:
ui: Removes deprecated widget
السطر 2: سطر فارغ أضِف سطرًا فارغًا بعد العنوان.
السطر 3: النصّ قدِّم وصفًا طويلاً يتم اقتطاعه عند 72 حرفًا بحد أقصى. يُرجى وصف المشكلة التي يحلّها التغيير وكيفية حلّها. على الرغم من أنّ النصّ هو اختياري، إلا أنّه مفيد للمستخدمين الآخرين الذين يحتاجون إلى الرجوع إلى التغيير. احرص على تضمين ملاحظة موجزة عن أي افتراضات أو معلومات أساسية قد تكون مهمة عندما يعمل مساهم آخر على هذه الميزة.
لقراءة مدوّنة عن أوصاف المراجعات الجيدة (مع أمثلة)، يُرجى الاطّلاع على كيفية كتابة رسالة مراجعة في Git.
احفظ عملية الإضافة.
تتم تلقائيًا إضافة معرّف تغيير فريد واسمك وبريدك الإلكتروني، اللذان تم
تقديمهما أثناء repo init
، إلى رسالة الإضافة.
تحميل التغيير للمراجعة
بعد تأكيد التغيير في سجلّ Git الشخصي، حمِّله إلى Gerrit:
نفِّذ الأمر التالي لتحميل جميع عمليات الربط في كل مشاريعك:
repo upload
يتم تضمين جميع التغييرات في جميع المشاريع في عملية التحميل.
.سيُطلب منك تشغيل نصوص الربط.
اضغط على a ثم على Enter.
سيُطلب منك الموافقة على عملية التحميل:
Upload project frameworks/native/ to remote branch main: branch BRANCH_NAME ( 1 commit, Wed Aug 7 09:32:33 2019 -0700): ff46b36d android codelab change to https://android-review.googlesource.com/ (y/N)?
اضغط على y ثم على Enter للموافقة على التحميل.
من المفترض أن تصلك رسالة مشابهة للرسالة remote: SUCCESS
.
طلب إجراء مراجعة
بعد تحميل التغييرات بنجاح، يقدّم لك Repo رابطًا يؤدي إلى التغييرات في Gerrit. انقر على الرابط لعرض التغييرات على خادم المراجعة أو إضافة تعليقات أو طلب مراجعين محدّدين للتغيير. يجب أن يراجع مالكو الرموز البرمجية المناسبون جميع التغييرات التي يتم إجراؤها على الرمز. لطلب إجراء مراجعة، يُرجى اتّباع الخطوات التالية:
في Gerrit، انقر على اقتراح مالكي الملفات:
الشكل 1: اقتراح رابط مالكي الإصدارات في Gerrit
يظهر مربّع حوار المُراجع. يحتوي مربّع الحوار هذا على قائمة بأصحاب الرموز البرمجية الذين يمكنهم مراجعة التغيير الذي أجريته.
انقر على مالك رمز لإضافة مراجعته إلى المراجعة.
تم تفعيل الزر إرسال.
(اختياري) اكتب عنوان البريد الإلكتروني لأي مستخدم آخر تريد أن يراجع التغيير.
(اختياري) انقر على +1 بجانب "الإرسال التلقائي" لإرسال التغيير تلقائيًا بعد تلقّي الموافقات. إذا لم تنقر على هذا الزر، على أحد موظفي Google إرسال التغيير نيابةً عنك.
انقر على إرسال لإرسال التغيير لمراجعته.
يراجع مالكو الرموز البرمجية التغييرات التي أجريتها على الرموز البرمجية، ويقدّمون لك ملاحظات بشأنها إما لتحديد المشكلة وحلّها أو الموافقة على التغييرات.
تحديد حالة التغيير
لتحديد حالة الملفات في التغيير، ابحث عن الرموز التالية بجانب الملفات في التغيير:
- (رمز علامة اختيار ): تمت الموافقة من قِبل مالك الرمز
- (رمز الصليب): لم يوافق مالك الرمز على ذلك
- (رمز الساعة ): في انتظار موافقة مالك الرمز
يعرض الشكل التالي رموز الحالة هذه المطبَّقة على الملفات في التغيير:
الشكل 2: مثال على ملفات تتضمّن رموزًا تُظهر موافقة مالك الرمز البرمجي
حلّ الملاحظات وتحميل تغيير بديل
إذا طلب أحد المراجعين إجراء تعديل على التعديل الذي أجريته، يمكنك تعديل عملية الإضافة ضمن Git، ما يؤدي إلى إنشاء مجموعة باتش جديدة للتغيير نفسه.
لحلّ الملاحظات وتعديل التغيير:
اتّبِع الخطوات من 2 إلى 4 في إجراء التغيير واختباره.
شغِّل الأوامر التالية لتعديل التغيير:
git add -A git commit --amend
عند تحميل التغيير المعدَّل، سيحلّ محل التغيير الأصلي في كلّ من Gerrit وسجلّ Git المحلي.
حلّ تعارضات المزامنة
إذا تم إرسال تغييرات أخرى إلى شجرة المصدر تتعارض مع التغييرات التي أجريتها، ستتلقّى رسالة تفيد بوجود تعارضات. لحلّ التعارضات:
تأكَّد من استخدام أحدث رمز:
repo sync .
يُستخدَم الأمر
repo sync
لجلب التحديثات من الخادم المصدر، ثم محاولة إعادة ربطHEAD
تلقائيًا بالإصدار البعيد الجديدHEAD
.إذا تعذّرت إعادة الربط التلقائية، يمكنك إجراء إعادة ربط يدويًا:
repo rebase .
حلّ تعارضات الدمج إذا لم تكن لديك طريقة مفضّلة لحلّ تعارضات الدمج، يمكنك استخدام
git mergetool
لحلّ التعارضات بين الملفات يدويًا.بعد إصلاح الملفات المتضاربة بنجاح، نفِّذ هذا الأمر لتطبيق عمليات الإضافة الجديدة:
git rebase --continue
إرسال التغيير
بعد أن يجتاز النموذج عملية المراجعة والتحقّق،
يجب أن يرسل أحد مراجعي Google الرمز نيابةً عنك. يمكن للمستخدمين
الآخرين تشغيل repo sync
لسحب التحديث إلى عملاء
المحليين المعنيّين.
بعد دمج العينة التي أرسلتها، يمكنك الانتقال إلى لوحة بيانات الدمج المستمر لنظام التشغيل Android لرصد وقت دمج العينات التي أرسلتها في الشجرة.