הגשת תיקונים

קל לארגן דפים בעזרת אוספים אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.

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

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

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

אֶמְצָעִי

לתורמים

אימות עם השרת

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

פתיחת סניף ריפו

עבור כל שינוי שאתה מתכוון לבצע, התחל סניף חדש בתוך מאגר Git הרלוונטי:

repo start NAME .

אתה יכול להקים כמה סניפים עצמאיים באותו זמן באותו מאגר. הענף NAME הוא מקומי בסביבת העבודה שלך ואינו כלול ב-Gerrit או בעץ המקור הסופי.

עושה את השינוי שלך

שנה את קבצי המקור ואמת את השינויים שלך.

בצע את השינויים במאגר המקומי שלך באמצעות הפקודות הבאות:

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.
לקריאת בלוג על תיאורי מחויבות טובים (עם דוגמאות), ראה כיצד לכתוב הודעת Git Commit מאת Chris Beams.

מעלה לגריט

לאחר שתבצע את השינוי בהיסטוריה האישית שלך, העלה אותו ל-Gerrit עם הפקודה הזו:

repo upload

אם התחלת מספר סניפים באותו מאגר, תתבקש לבחור אילו מהם להעלות.

לאחר העלאה מוצלחת, Repo מספקת לך את כתובת האתר של דף חדש ב- Gerrit . לחץ על הקישור ש-Repo נותן לך כדי להציג את התיקון שלך בשרת הביקורת, להוסיף הערות או לבקש סוקרים ספציפיים עבור התיקון שלך.

מבקש סקירה

לאחר שהעלית את השינויים שלך ל-Gerrit, התיקון חייב להיבדק ולאשר על ידי בעלי הקוד המתאימים. אתר בעלי קוד בקבצי OWNERS .

כדי למצוא את בעלי הקוד המתאימים ולהוסיף אותם כבודקים עבור השינוי שלך, בצע את השלבים הבאים.

  1. בחר בקישור ' הצע בעלים' בממשק המשתמש של Gerrit כדי לראות רשימה של בעלי קוד עבור הקבצים בתיקון שלך.

    מציע לבעלים קישור ב-Gerrit
    איור 1. הצע קישור לבעלים ב-Gerrit
  2. הוסף בעלי קוד מהרשימה כבודקים עבור התיקון שלך.

כדי לקבוע את מצב הקבצים בתיקון שלך, בדוק את הסמלים הבאים לצד הקבצים בתיקון.

  • (סמל סימן ביקורת): אושר על ידי בעל הקוד
  • (סמל צלב): לא אושר על ידי בעל הקוד
  • (סמל שעון): ממתין לאישור של בעל הקוד
איור 2. דוגמה לקבצים עם סמלים המציגים את סטטוס אישור בעלי הקוד

מעלה תיקון חלופי

נניח שמבקר הסתכל על התיקון שלך וביקש שינוי קטן. אתה יכול לתקן את ההתחייבות שלך בתוך Git, מה שמוביל לתיקון חדש ב-Gerrit שיש לו את מזהה השינוי הזהה לזה המקורי.

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 המתאים.

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

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

טיפול נמרץ

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

CLDR

רוב הנתונים הלשוניים בטיפול נמרץ מגיעים מפרויקט Unicode CLDR . אנא שלח את כל הבקשות במעלה הזרם באמצעות הבקשות לשינוי CLDR והוסף את התווית 'אנדרואיד'.

LLVM/Clang/Compiler-rt

בצע את כל השינויים בפרויקטים הקשורים ל-LLVM ( external/clang /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.