ارسال وصله ها

در این صفحه روند کامل ارسال پچ به پروژه منبع باز Android (AOSP) ، از جمله نحوه درخواست بررسی و پیگیری تغییرات خود با Gerrit ، شرح داده شده است .

پیش نیازها

برای شروع ، اطمینان حاصل کنید که موارد زیر را انجام داده اید:

منابع

  • برای جزئیات بیشتر درباره Repo و Git ، به صفحه Tools Control Source مراجعه کنید.
  • برای اطلاعات در مورد نقش های مختلف در انجمن منبع باز Android ، به صفحه نقش های پروژه مراجعه کنید.
  • برای اطلاعات مجوز در مورد مشارکت کد در سیستم عامل Android ، به صفحه مجوزها مراجعه کنید.

برای همکاران

احراز هویت با سرور

اگر آدرس IP را با سایر کاربران به اشتراک بگذارید ، حتی برای الگوهای استفاده منظم نیز می توان سهمیه ایجاد کرد. این می تواند زمانی اتفاق بیفتد که به عنوان مثال ، بسیاری از کاربران مشتری های جدید را از همان آدرس IP در یک بازه زمانی کوتاه همگام سازی کنند. دسترسی معتبر ، بدون در نظر گرفتن آدرس IP ، از سهمیه جداگانه ای برای هر کاربر استفاده می کند. برای مطالعه در مورد فعال کردن دسترسی تأیید شده ، به استفاده از تأیید اعتبار مراجعه کنید.

راه اندازی شعبه Repo

برای هر تغییری که قصد انجام آن را دارید ، شاخه جدیدی را در مخزن مربوطه Git شروع کنید:

repo start NAME .

می توانید همزمان چندین شعبه مستقل را در همان مخزن راه اندازی کنید. شاخه NAME محلی برای فضای کاری شما است و نه در Gerrit و نه در درخت منبع نهایی وجود ندارد.

تغییر خود را ایجاد کنید

پرونده های منبع را اصلاح کنید و تغییرات خود را تأیید کنید.

با استفاده از این دستورات تغییرات را در مخزن محلی خود انجام دهید:

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.
برای خواندن یک وبلاگ در مورد توصیفات خوب متعهد (به همراه مثال) ، به نحوه نوشتن پیام تعهد Git توسط Chris Beams مراجعه کنید.

در حال بارگذاری در گریت

بعد از اینکه تغییر خود را در تاریخچه شخصی خود انجام دادید ، آن را با این دستور در Gerrit بارگذاری کنید:

repo upload

اگر چندین شعبه را در یک مخزن یکسان شروع کرده اید ، از شما خواسته می شود شاخه های خود را بارگذاری کنید.

پس از بارگذاری موفقیت آمیز ، Repo آدرس صفحه جدیدی را در Gerrit به شما ارائه می دهد . روی پیوندی که Repo به شما می دهد کلیک کنید تا وصله خود را در سرور مرور مشاهده کنید ، نظرات خود را اضافه کنید یا بازرسان خاصی را برای وصله خود درخواست کنید.

درخواست بازبینی

بعد از اینکه تغییرات خود را در Gerrit بارگذاری کردید ، وصله باید بررسی شود و توسط دارندگان کد مناسب تأیید شود. دارندگان کد را در پرونده های OWNERS .

برای یافتن دارندگان کد مناسب و افزودن آنها به عنوان بازرسان تغییر خود ، این مراحل را دنبال کنید.

  1. پیوند SUGGEST OWNERS را در UI Gerrit انتخاب کنید تا لیستی از دارندگان کد فایلهای موجود در وصله خود را مشاهده کنید.

    پیوند مالکان را در گریت پیشنهاد دهید
    شکل 1. پیشنهاد پیوند مالکان در Gerrit
  2. دارندگان کد را از لیست به عنوان بازبینی وصله خود اضافه کنید.

برای تعیین وضعیت پرونده ها در وصله ، نمادهای زیر را در کنار پرونده های وصله بررسی کنید.

  • (نماد علامت تأیید): تأیید شده توسط مالک کد
  • (نماد ضربدر): توسط مالک کد تأیید نشده است
  • (نماد ساعت): در انتظار تأیید مالک کد است
شکل 2. نمونه ای از پرونده ها با نمادهایی که وضعیت تأیید مالک کد را نشان می دهند

در حال بارگذاری پچ جایگزین

فرض کنید یک بازبینی به وصله شما نگاه کرده و درخواست اصلاح کوچکی کرده است. شما می توانید تعهدات خود را در Git اصلاح کنید ، که منجر به ایجاد یک پچ جدید در Gerrit می شود که دارای همان شناسه تغییر همان نسخه اصلی است.

git add -A
git commit --amend

وقتی پچ اصلاح شده را بارگذاری می کنید ، جایگزین نسخه اصلی هم در Gerrit و هم در تاریخچه Git محلی شما می شود.

رفع تعارضات همگام سازی

اگر وصله های دیگری به درخت منبع ارسال می شود که با شما مغایرت دارد ، وصله خود را در بالای HEAD جدید مخزن منبع قرار دهید. برای انجام این کار ، این دستور را اجرا کنید:

repo sync

دستور repo sync به روزرسانی ها را از سرور منبع دریافت می کند ، سپس سعی می کند HEAD شما را به صورت HEAD از راه دور جدید HEAD .

اگر نصب مجدد اتوماتیک ناموفق بود ، یک بارگیری مجدد دستی انجام دهید.

repo rebase

ابزار دیگر برای مقابله با درگیری git mergetool . وقتی پرونده های متناقض را با موفقیت ادغام کردید ، این دستور را اجرا کنید:

git rebase --continue

پس از اتمام بازآفرینی خودکار یا دستی ، repo upload مجدد repo upload برای ارائه وصله اصلاح شده خود اجرا کنید.

پس از تأیید مقاله

پس از ارسال مقاله از طریق روند بررسی و تأیید ، گریت به طور خودکار تغییر را در مخزن عمومی ادغام می کند. سایر کاربران می توانند repo sync برای جلب به روزرسانی به مشتریان محلی مربوطه خود اجرا کنند.

برای پروژه های بالادستی

اندروید از تعدادی دیگر از پروژه های منبع باز مانند هسته Linux و WebKit استفاده می کند ، همانطور که در مدیریت نرم افزار Android شرح داده شده است. برای اکثر پروژه هایی که در قسمت external/ زندگی می کنند ، تغییرات را در بالادست انجام دهید ، سپس نسخه بالادست جدیدی را که حاوی تغییرات شما است ، به نگهدارندگان Android اطلاع دهید.

همچنین ممکن است وصله هایی را بارگذاری کنید که باعث ردیابی نسخه بالادستی جدید شود. توجه داشته باشید که در صورت استفاده گسترده از پروژه در Android ، مانند بسیاری از موارد بزرگتر ذکر شده در زیر ، که معمولاً با هر نسخه به روز می شوند ، انجام این تغییرات می تواند دشوار باشد.

یک مورد خاص جالب Bionic است. بیشتر کدهای موجود در BSD است ، بنابراین مگر اینکه تغییر در کدی باشد که برای Bionic جدید است ، لطفاً یک اصلاح بالادستی ایجاد کنید ، سپس یک فایل کاملاً جدید از BSD مناسب بگیرید.

هسته آندروید

ترجیح می دهید همه تغییرات را در بالادست انجام دهید. برای راهنمایی کلی ، دستورالعمل های کمک به هسته هسته Android را دنبال کنید.

ICU4C

تمام تغییرات را در پروژه ICU4C در external/icu4c در صفحه اصلی ICU-TC انجام دهید . برای اطلاعات بیشتر به ارسال اشکالات ICU و درخواستهای ویژگی مراجعه کنید.

LLVM / Clang / کامپایلر-RT

در صفحه زیرساخت LLVM Compiler کلیه تغییرات را در پروژه های مرتبط با LLVM ( external/clang external/compiler-rt ، external/compiler-rt ، external/llvm ) ایجاد کنید.

mksh

یا با ارسال ایمیل به miros-mksh در دامنه mirbsd.org (بدون ارائه اشتراک در آنجا لازم است اشتراک) یا در Launchpad ، تمام تغییرات را در پروژه MirBSD Korn Shell در external/mksh .

OpenSSL

در صفحه OpenSSL تمام تغییرات را در پروژه OpenSSL در external/openssl .

V8

کلیه تغییرات پروژه V8 را در صفحه external/v8 در صفحه external/v8 . برای اطلاعات بیشتر به مشارکت در V8 مراجعه کنید.

وب کیت

همه تغییرات را در پروژه WebKit در external/webkit در صفحه WebKit انجام دهید . با ایجاد یک اشکال در WebKit ، فرآیند را شروع کنید. در اشکال ، فقط برای Android از زمینه های Platform و OS استفاده کنید که اشکال مخصوص Android باشد. پس از افزودن اصلاح پیشنهادی و افزودن آزمایشات ، احتمالاً اشکالات بیشتر مورد توجه بازرسان قرار می گیرند. برای جزئیات بیشتر به مشارکت کد در WebKit مراجعه کنید.

zlib

تمام تغییرات را در پروژه zlib در external/zlib در صفحه اصلی zlib انجام دهید .