הגשת תיקונים

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

תנאים מוקדמים

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

אֶמְצָעִי

לתורמים

אימות מול השרת

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

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

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

repo start NAME .

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

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

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

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

git add -A
git commit -s

שנה תיאורים

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

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

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

מעלה לחריט

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

repo upload

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

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

מבקש בדיקה

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

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

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

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

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

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

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

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

git add -A
git commit --amend

כשאתה מעלה את התיקון המתוקן, הוא מחליף את המקור גם ב- Gerrit וגם בהיסטוריית Git המקומית שלך.

פתרון התנגשויות סינכרון

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

repo sync

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

אם ה- rebase האוטומטי אינו מצליח, בצע rebase ידני.

repo rebase

כלי נוסף להתמודדות עם עימות rebase הוא git mergetool . כאשר מיזגת בהצלחה את הקבצים המתנגשים, הפעל פקודה זו:

git rebase --continue

לאחר השלמת הריבוי האוטומטי או הידני, הפעל את repo upload כדי להגיש את התיקון מחדש.

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

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

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

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

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

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

גרעין אנדרואיד

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

ICU4C

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

LLVM / Clang / Compiler-rt

בצע את כל השינויים בפרויקטים הקשורים ל- LLVM ( external/clang , external/compiler-rt , external/llvm ) בדף תשתיות מהדר LLVM .

מקש

בצע את כל השינויים בפרויקט MirBSD Korn Shell external/mksh ידי שליחת דוא"ל ל- miros-mksh mirbsd.org בדומיין mirbsd.org (אין צורך במנוי להגיש שם) או ב- Launchpad .

OpenSSL

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

V8

הגש את כל השינויים לפרויקט V8 ב- external/v8 בעמוד גליון V8 . ראה תרומה ל- V8 לפרטים.

WebKit

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

זליב

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