این صفحه روند کامل ارسال تغییر کد به پروژه منبع باز Android (AOSP) را شرح میدهد، از جمله نحوه درخواست بازبینی و پیگیری تغییرات.
AOSP به Gerrit متکی است، یک سیستم بررسی کد مبتنی بر وب برای پروژه هایی که از Git استفاده می کنند.
قراردادهای مجوز مشارکت کننده را امضا کنید
قبل از ایجاد هرگونه تغییر کد برای AOSP، باید قراردادها و هدرهای مجوز Contributor را بخوانید و یکی از قراردادهای زیر را امضا کنید:
- بهعنوان یک مشارکتکننده که فقط از طرف شما مشارکت میکند، قرارداد مجوز مشارکتکننده فردی را امضا کنید.
- بهعنوان کارمندی که برای یک شرکت کار میکنید، مطمئن شوید که شرکت شما موافقتنامه مجوز مشارکت شرکتی را امضا کرده است که به شما اجازه میدهد از طرف آن مشارکت کنید.
یک شعبه راه اندازی کنید
برای هر تغییر کدی که قصد انجام آن را دارید، مراحل زیر را انجام دهید:
یک شعبه جدید در مخزن 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
بروید.فایل های منبع را تغییر دهید یا اضافه کنید. برای هر گونه تغییر ایجاد شده:
مشخص کنید که آیا نیاز به استفاده از پرچمهای راهاندازی ویژگی دارید یا خیر و در این صورت، آنها را برای کد جدید خود پیادهسازی کنید.
بهترین روشها را در شامل سرصفحههای مجوز دنبال کنید.
برای کد جاوا، سبک کد جاوا AOSP را برای مشارکتکنندگان دنبال کنید.
برخی از قسمتهای AOSP با Kotlin (
.kt
) نوشته شدهاند و میتوانید از Kotlin در مناطقی از پلتفرم که قبلاً در Kotlin نوشته شدهاند استفاده کنید. برای اطلاعات بیشتر درباره Kotlin در اندروید، به راهنمای سبک Kotlin توسعهدهنده اندروید و راهنمای interop Kotlin-Java مراجعه کنید. برای راهنمایی های گسترده تر Kotlin، به سایت زبان Kotlin مراجعه کنید.هنگام نوشتن API، دستورالعملهای Android API را دنبال کنید. از این دستورالعمل ها برای مشاهده زمینه تصمیمات API اندروید استفاده کنید. اضافات و اصلاحات APIهای پلتفرم توسط Metalava تأیید شده است.
صحنه سازی کنید و تغییر خود را متعهد شوید
یک commit واحد اصلی کنترل ویرایش در Git است و شامل یک عکس فوری از ساختار دایرکتوری و محتوای فایل برای کل پروژه است. این مراحل را برای انجام تغییر خود دنبال کنید:
بهطور پیشفرض، Git ثبت میکند اما تغییراتی که ایجاد میکنید را ردیابی نمیکند. برای اینکه به Git دستور دهید تغییرات شما را ردیابی کند، باید آن تغییرات را برای گنجاندن در یک commit علامت گذاری یا مرحله بندی کنید. این دستور را برای مرحله تغییر اجرا کنید:
git add -A
این دستور تغییراتی را که در هر فایلی ایجاد کرده اید ردیابی می کند.
فایلها را در قسمت مرحلهبندی بگیرید و آنها را در پایگاه داده محلی خود ذخیره کنید:
git commit -s
به طور پیش فرض، یک ویرایشگر متن باز می شود و از شما خواسته می شود یک پیام commit ارائه دهید.
یک پیام commit در قالب زیر ارائه دهید:
خط 1: عنوان. یک خلاصه یک خطی از تغییرات ارائه دهید (حداکثر 50 کاراکتر). استفاده از پیشوندهایی را برای توصیف ناحیه ای که تغییر داده اید، در نظر بگیرید، به دنبال آن تغییراتی را که در این commit ایجاد کرده اید، توضیح دهید، مانند مثال زیر که حاوی تغییر رابط کاربری است:
ui: Removes deprecated widget
خط 2: خط خالی. تیتر را با یک خط خالی دنبال کنید.
خط 3: بدن. یک توضیح طولانی ارائه دهید که حداکثر 72 کاراکتر به صورت سخت بسته بندی شود. توضیح دهید که این تغییر چه مشکلی را حل می کند و چگونه. اگرچه بدن اختیاری است، اما برای دیگرانی که باید به تغییر مراجعه کنند مفید است. مطمئن شوید که یادداشت کوتاهی از هرگونه فرضیات یا اطلاعات پسزمینهای که ممکن است در زمانی که مشارکتکننده دیگری روی این ویژگی کار میکند مهم باشد، اضافه کنید.
برای خواندن یک وبلاگ در مورد توضیحات commit خوب (به همراه مثال)، به نحوه نوشتن یک پیام Git Commit مراجعه کنید.
commit را ذخیره کنید.
یک شناسه تغییر منحصربهفرد و نام و ایمیل شما، که در زمان repo init
ارائه شدهاند، بهطور خودکار به پیام commit شما اضافه میشوند.
تغییر را برای بررسی آپلود کنید
بعد از اینکه تغییر خود را در تاریخچه Git شخصی خود انجام دادید، آن را در Gerrit آپلود کنید:
دستور زیر را برای آپلود تمام commit های خود در تمام پروژه های خود اجرا کنید:
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 پیشنهاد دهید.
گفتگوی بازبین ظاهر می شود. این گفتگو حاوی لیستی از صاحبان کد است که می توانند تغییر شما را بررسی کنند.
روی مالک کد کلیک کنید تا آنها را به بررسی خود اضافه کنید.
دکمه SEND فعال می شود.
(اختیاری) آدرس ایمیل هر شخص دیگری را که می خواهید تغییر شما را بررسی کند تایپ کنید.
(اختیاری) روی 1+ در کنار ارسال خودکار کلیک کنید تا پس از دریافت تأییدیهها، تغییر بهطور خودکار ارسال شود. اگر روی این دکمه کلیک نکنید، یک کارمند Google باید تغییر شما را برای شما ارسال کند.
برای ارسال تغییر برای بررسی، SEND را کلیک کنید.
صاحبان کد تغییرات کد شما را بررسی می کنند و بازخوردی را برای حل یا تأیید تغییرات ارائه می دهند.
تعیین وضعیت تغییر
برای تعیین وضعیت فایلهای موجود در تغییر، نمادهای زیر را در کنار فایلهای موجود در تغییر بررسی کنید:
- (نماد علامت): تایید شده توسط صاحب کد
- (نماد متقاطع): توسط مالک کد تایید نشده است
- (نماد ساعت): در انتظار تایید توسط مالک کد
شکل زیر این نمادهای وضعیت اعمال شده بر روی فایل ها را در یک تغییر نشان می دهد:
شکل 2. نمونه فایل هایی با نمادهایی که تایید مالک کد را نشان می دهد.
بازخورد را حل کنید و یک تغییر جایگزین بارگذاری کنید
اگر بازبینی کننده درخواست تغییری در بهروزرسانی شما کرد، میتوانید commit خود را در Git اصلاح کنید که منجر به ایجاد یک پچست جدید در همان تغییر میشود.
برای حل بازخورد و اصلاح تغییر خود:
مراحل 2-4 را در Make دنبال کنید و تغییر خود را آزمایش کنید .
دستورات زیر را برای اصلاح تغییرات خود اجرا کنید:
git add -A git commit --amend
وقتی تغییر اصلاح شده را آپلود می کنید، هم در Gerrit و هم در تاریخچه Git محلی شما جایگزین اصلی می شود.
تضادهای همگام سازی را حل کنید
اگر تغییرات دیگری به درخت منبع ارسال شود که با شما تضاد دارد، پیامی دریافت می کنید که درگیری دارید. برای حل تعارضات:
مطمئن شوید که با جدیدترین کد کار می کنید:
repo sync .
دستور
repo sync
بهروزرسانیها را از سرور منبع دریافت میکند، سپس سعی میکند به طور خودکارHEAD
شما را رویHEAD
از راه دور جدید تغییر دهد.اگر تغییر مجدد خودکار ناموفق بود، یک تغییر دستی را انجام دهید:
repo rebase .
تضادهای ادغام را حل کنید. اگر روش ترجیحی برای حل تضادهای ادغام ندارید، می توانید از
git mergetool
برای رفع تداخل بین فایل ها به صورت دستی استفاده کنید .هنگامی که فایل های متضاد را با موفقیت برطرف کردید، این دستور را برای اعمال commit های جدید اجرا کنید:
git rebase --continue
تغییر را ارسال کنید
پس از اینکه یک ارسال از طریق فرآیند بررسی و تأیید انجام شد، یک بازبین Google باید کد را برای شما ارسال کند. سایر کاربران می توانند repo sync
اجرا کنند تا به روز رسانی را به مشتریان محلی مربوطه خود بکشند.
پس از ادغام موارد ارسالی، میتوانید از داشبورد یکپارچهسازی پیوسته Android دیدن کنید تا زمان ادغام موارد ارسالی خود را در درخت بررسی کنید.