עבודה עם קוד אנדרואיד מצריכה שימוש ב- Git (מערכת בקרת גרסאות בקוד פתוח) וב- Repo (כלי ניהול מאגר שנבנה בגוגל הפועל על גבי Git). ראה כלי בקרת מקור להסבר על הקשר בין Repo ו-Git וקישורים לתיעוד תומך עבור כל כלי.
זְרִימָה
פיתוח אנדרואיד כולל את זרימת העבודה הבסיסית הבאה:
- התחל סניף נושא חדש באמצעות
repo start
. - ערוך את הקבצים.
- שינויים בשלבים באמצעות
git add
. - בצע שינויים באמצעות
git commit
. - העלה שינויים לשרת הביקורת באמצעות
repo upload
.
משימות
עבודה עם Git ו-Repo במאגרי הקוד של אנדרואיד כרוכה בביצוע המשימות הנפוצות הבאות.
פקודה | תיאור |
---|---|
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 Command Reference .
סנכרון לקוחות
כדי לסנכרן את הקבצים עבור כל הפרויקטים הזמינים:
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 לשמר את השינויים שלך, עליך לסמן או לביים את השינויים הללו להכללה ב-commit.
לשינויים בשלבים:
git add
פקודה זו מקבלת ארגומנטים עבור קבצים או ספריות בתוך ספריית הפרויקט. למרות השם, git add
לא רק מוסיף קבצים למאגר Git; זה יכול לשמש גם לשלב שינויים ומחיקות קבצים.
הצגת סטטוס לקוח
כדי לרשום את מצב הקבצים:
repo status
כדי להציג עריכות לא מחויבות (עריכות מקומיות שאינן מסומנות להתחייבות):
repo diff
כדי להציג עריכות מחויבות (עריכות ממוקמות המסומנות כ-commit), ודא שאתה נמצא בספריית הפרויקט ואז הפעל את git diff
עם הארגומנט cached
:
cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached
מתחייבים לשינויים
commit היא היחידה הבסיסית של בקרת גרסאות ב-Git ומורכבת מתמונת מצב של מבנה הספריות ותוכן הקובץ עבור כל הפרויקט. השתמש בפקודה זו כדי ליצור commit ב-Git:
git commit
כאשר תתבקש להודיע על הודעת התחייבות, ספק הודעה קצרה (אך מועילה) עבור שינויים שנשלחו ל-AOSP. אם לא תוסיף הודעת commit, ה-commit נכשל.
מעלה שינויים לגריט
עדכן לגרסה האחרונה ולאחר מכן העלה את השינוי:
repo sync
repo upload
פקודות אלו מחזירות רשימה של שינויים שביצעתם ומבקשות מכם לבחור את הסניפים להעלאה לשרת הביקורת. אם יש רק ענף אחד, אתה רואה הנחיה פשוטה של y/n
.
פתרון התנגשויות סנכרון
אם פקודת repo sync
מחזירה התנגשויות סנכרון:
- הצג את הקבצים שאינם מוזגים (קוד סטטוס = U).
- ערוך את אזורי הסכסוך לפי הצורך.
- שנה לספריית הפרויקט הרלוונטית. הוסף ותחייב את הקבצים המושפעים, ולאחר מכן בסיס מחדש את השינויים:
git add .
git commit
git rebase --continue
- לאחר השלמת הבסיס מחדש, התחל את הסנכרון כולו שוב:
repo sync PROJECT0 PROJECT1 ... PROJECTN
ניקיון לקוחות
לאחר מיזוג שינויים ב-Gerrit, עדכן את ספריית העבודה המקומית שלך, ולאחר מכן השתמש ב- repo prune
כדי להסיר בבטחה ענפי נושא מיושנים:
repo sync
repo prune
מחיקת לקוחות
מכיוון שכל מידע המדינה מאוחסן בלקוח שלך, אתה רק צריך למחוק את הספרייה ממערכת הקבצים שלך:
rm -rf WORKING_DIRECTORY
מחיקת לקוח מוחקת לצמיתות את כל השינויים שלא העלית לבדיקה.