עבודה עם קוד אנדרואיד מחייבת שימוש ב- Git (מערכת בקרת גרסאות קוד פתוח) וב- Repo (כלי ניהול מאגר שנבנה על ידי Google הפועל על גבי Git). ראה כלים לבקרת מקור להסבר על הקשר בין Repo ו- Git וקישורים לתיעוד תומך עבור כל כלי.
זְרִימָה
פיתוח אנדרואיד כולל את זרימת העבודה הבסיסית הבאה:
- התחל ענף נושא חדש באמצעות
repo start
. - ערוך את הקבצים.
- שינויי במה באמצעות
git add
. - בצע שינויים באמצעות
git commit
. - העלה שינויים לשרת הביקורת באמצעות
repo upload
.
משימות
עבודה עם Git ו- Repo במאגרי הקוד של Android כוללת ביצוע המשימות הנפוצות הבאות.
פקודה | תיאור |
---|---|
repo init | מאתחל לקוח חדש. |
repo sync | מסנכרן את הלקוח למאגרים. |
repo start | מתחיל סניף חדש. |
repo status | מציג את סטטוס הסניף הנוכחי. |
repo upload | מעלה שינויים לשרת הביקורת. |
git add | מביים את הקבצים. |
git commit | מבצע את הקבצים המבוימים. |
git branch | מציג את הענפים הנוכחיים. |
git branch [branch] | יוצר ענף נושא חדש. |
git checkout [branch] | מחליף את HEAD לענף שצוין. |
git merge [branch] | מתמזג [branch] לסניף הנוכחי. |
git diff | מראה שונה של השינויים הלא מבוימים. |
git diff --cached | מראה שונה מהשינויים המבוימים. |
git log | מציג את ההיסטוריה של הסניף הנוכחי. |
git log m/[codeline].. | מראה את ההתחייבויות שאינן נדחפות. |
לקבלת מידע אודות שימוש ב- Repo להורדת מקור, ראה הורדת המקור וההפניה לפקודה של Repo .
סנכרון לקוחות
כדי לסנכרן את הקבצים לכל הפרויקטים הזמינים:
repo sync
כדי לסנכרן את הקבצים עבור פרויקטים נבחרים:
repo sync PROJECT0 PROJECT1 ... PROJECTN
יצירת ענפי נושא
התחל ענף נושא בסביבת העבודה המקומית שלך בכל פעם שאתה מתחיל בשינוי, למשל כאשר אתה מתחיל לעבוד על באג או על תכונה חדשה. ענף נושא אינו עותק של הקבצים המקוריים; זה מצביע על התחייבות מסוימת, מה שהופך את יצירת סניפים מקומיים ומעבר ביניהם לפעולה קלה. באמצעות סניפים תוכלו לבודד היבט אחד בעבודה שלכם מהאחרים. לקבלת מאמר מעניין אודות שימוש בענפי נושא, עיין בהפרדת ענפי נושאים .
כדי לפתוח ענף נושא באמצעות Repo, נווט לפרויקט והפעל:
repo start BRANCH_NAME .
תקופת העקיבה ( .
) מייצגת את הפרויקט בספריית העבודה הנוכחית.
כדי לוודא שנוצר הסניף החדש:
repo status .
שימוש בענפי נושא
כדי להקצות את הסניף לפרויקט ספציפי:
repo start BRANCH_NAME PROJECT_NAME
לקבלת רשימה של כל הפרויקטים, עיין ב- android.googlesource.com . אם כבר ניווטת לספריית הפרויקט, פשוט השתמש בתקופה כדי לייצג את הפרויקט הנוכחי.
כדי לעבור לסניף אחר בסביבת העבודה המקומית שלך:
git checkout BRANCH_NAME
לצפייה ברשימת הסניפים הקיימים:
git branch
אוֹ
repo branches
שתי הפקודות מחזירות את רשימת הענפים הקיימים עם שם הענף הנוכחי לפניהם כוכבית (*).
הזמנת קבצים
כברירת מחדל, Git שם לב אך לא עוקב אחר השינויים שאתה מבצע בפרויקט. כדי לומר ל- Git לשמר את השינויים שלך, עליך לסמן או לביים שינויים אלה לצורך הכללה בהתחייבות.
לביצוע שינויים:
git add
פקודה זו מקבלת ארגומנטים עבור קבצים או ספריות בספריית הפרויקט. למרות השם, git add
לא רק מוסיף קבצים למאגר Git; ניתן להשתמש בו גם לביצוע שינויים ומחיקות קבצים.
צופה בסטטוס הלקוח
כדי לרשום את מצב הקבצים:
repo status
כדי להציג עריכות מחויב (והשינויים המקומיים שאינם מסומנים עבור להתחייב):
repo diff
כדי להציג עריכות מחויבות (עריכות ממוקמות המסומנות לביצוע), ודא שאתה נמצא בספריית הפרויקט ואז הפעל git diff
עם הארגומנט cached
:
cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached
ביצוע שינויים
התחייבות היא היחידה הבסיסית של בקרת גרסאות ב- Git ומורכבת מתמונת מצב של מבנה הספריה ותוכן הקבצים עבור הפרויקט כולו. השתמש בפקודה זו כדי ליצור התחייבות ב- Git:
git commit
כאשר תתבקש למסור התחייבות, ספק הודעה קצרה (אך מועילה) לשינויים שהוגשו ל- AOSP. אם אינך מוסיף הודעת התחייבות, ההתחייבות נכשלת.
העלאת שינויים לחריט
עדכן לתיקון האחרון והעלה את השינוי:
repo sync
repo upload
פקודות אלה מחזירות רשימת שינויים שביצעת ומבקשות ממך לבחור את הענפים להעלאה לשרת הביקורת. אם יש סניף אחד בלבד, תראה הנחיה פשוטת y/n
.
פתרון התנגשויות סינכרון
אם הפקודה repo sync
מחזירה התנגשויות סינכרון:
- צפה בקבצים שאינם מותגים (קוד סטטוס = U).
- ערוך את אזורי הסכסוך לפי הצורך.
- עבור לספריית הפרויקטים הרלוונטית. הוסף והתחייב את הקבצים המושפעים, ואז החל מחדש את השינויים:
git add .
git commit
git rebase --continue
- לאחר השלמת ה- rebase, התחל את כל הסנכרון שוב:
repo sync PROJECT0 PROJECT1 ... PROJECTN
מנקים לקוחות
לאחר מיזוג שינויים ל- Gerrit, עדכן את ספריית העבודה המקומית שלך, ואז השתמש repo prune
כדי להסיר בבטחה ענפי נושא מעופשים:
repo sync
repo prune
מחיקת לקוחות
מכיוון שכל פרטי המדינה מאוחסנים בלקוח שלך, אתה רק צריך למחוק את הספרייה ממערכת הקבצים שלך:
rm -rf WORKING_DIRECTORY
מחיקת לקוח מוחקת לצמיתות את כל השינויים שלא העלתם לבדיקה.