שלח תיקונים

דף זה מתאר את התהליך המלא של שליחת תיקון לפרויקט הקוד הפתוח של אנדרואיד (AOSP), כולל כיצד לבקש בדיקה ולעקוב אחר השינויים שלך עם Gerrit .

דרישות מוקדמות

כדי להתחיל, ודא שעשית את הפעולות הבאות:

אֶמְצָעִי

אימות עם השרת

אם אתה חולק כתובת 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.

Make your change

Modify the source files, and test your changes.

For any changes made, follow License header best practices.

Commit your change

Commit the changes to your local repository with these commands:

git add -A
git commit -s

שנה תיאורים

  • שורה 1: כותרת

    ספק סיכום בשורה אחת (50 תווים לכל היותר )

    פורמט זה משמש את Git ו-Gerrit עבור תצוגות שונות. זה החלק החשוב והצפוף ביותר בהודעת ההתחייבות שלך. שקול להשתמש בקידומות כדי לתאר את האזור ששינית, ואחריו תיאור של השינוי שביצעת ב-commit זה, כמו זה עם 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.

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

Request 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

Upload 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 כדי לשלוח את התיקון המבוסס מחדש שלך.

לאחר אישור הגשה

לאחר שהגשה עוברת את תהליך הבדיקה והאימות, חריט ממזגת אוטומטית את השינוי לתוך המאגר הציבורי. משתמשים אחרים יכולים להפעיל repo sync כדי למשוך את העדכון ללקוחות המקומיים שלהם.

עבור פרויקטים במעלה הזרם

אנדרואיד עושה שימוש במספר פרויקטים אחרים של קוד פתוח, כגון ליבת לינוקס ו-WebKit, כפי שמתואר ב- Android Software Management . עבור רוב הפרויקטים שנמצאים תחת external/ , בצע את השינויים במעלה הזרם, ולאחר מכן הודע למנהלי אנדרואיד על המהדורה החדשה במעלה הזרם המכילה את השינויים שלך.

אתה יכול גם להעלות תיקונים שגורמים למעקב אחר מהדורה חדשה במעלה הזרם. שימו לב שאלו עשויים להיות שינויים קשים לביצוע אם הפרויקט נמצא בשימוש נרחב בתוך אנדרואיד, כמו רוב הגדולים יותר המוזכרים להלן, אשר בדרך כלל משודרגים עם כל מהדורה.

מקרה מיוחד מעניין אחד הוא Bionic. חלק גדול מהקוד שם הוא מ-BSD, אז אלא אם השינוי הוא לקוד חדש ב-Bionic, אנא בצע תיקון במעלה הזרם ולאחר מכן משיכה של קובץ חדש לגמרי מה-BSD המתאים.

ליבת אנדרואיד

בצע את כל השינויים במעלה הזרם. לקבלת הדרכה כללית, עקוב אחר הנחיות התרומה של ליבת אנדרואיד ודף פיתוח קוד ליבה עבור GKI .

המחלקה לטיפול נמרץ

בצע את כל השינויים בפרויקט ICU ב- external/icu (תיקיות icu4c/ ו- icu4j/ ) בדף הבית של ICU-TC . ראה הגשת באגים לטיפול נמרץ ובקשות לתכונות למידע נוסף. הוסף את התווית "android" לכל הבקשות של Jira במעלה הזרם.

CLDR

רוב הנתונים הלשוניים בטיפול נמרץ מגיעים מפרויקט Unicode CLDR . שלח את כל הבקשות במעלה הזרם לפי Contributing to 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 עבור שדות הפלטפורמה ומערכת ההפעלה רק אם הבאג ספציפי לאנדרואיד. יש סיכוי גבוה יותר שבאגים יקבלו את תשומת הלב של הבודקים לאחר הוספת תיקון מוצע ובדיקות כלולות. ראה תרומת קוד ל- WebKit לפרטים.

zlib

בצע את כל השינויים בפרויקט zlib ב- external/zlib בדף הבית של zlib .