זרימת עבודה של בקרת מקור

עבודה עם קוד אנדרואיד מחייבת שימוש ב- Git (מערכת בקרת גרסאות קוד פתוח) וב- Repo (כלי ניהול מאגר שנבנה על ידי Google הפועל על גבי Git). ראה כלים לבקרת מקור להסבר על הקשר בין Repo ו- Git וקישורים לתיעוד תומך עבור כל כלי.

זְרִימָה

פיתוח אנדרואיד כולל את זרימת העבודה הבסיסית הבאה:

  1. התחל ענף נושא חדש באמצעות repo start .
  2. ערוך את הקבצים.
  3. שינויי במה באמצעות git add .
  4. בצע שינויים באמצעות git commit .
  5. העלה שינויים לשרת הביקורת באמצעות 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 מחזירה התנגשויות סינכרון:

  1. צפה בקבצים שאינם מותגים (קוד סטטוס = U).
  2. ערוך את אזורי הסכסוך לפי הצורך.
  3. עבור לספריית הפרויקטים הרלוונטית. הוסף והתחייב את הקבצים המושפעים, ואז החל מחדש את השינויים:
    git add .
    git commit
    git rebase --continue
    
  4. לאחר השלמת ה- rebase, התחל את כל הסנכרון שוב:
    repo sync PROJECT0 PROJECT1 ... PROJECTN
    

מנקים לקוחות

לאחר מיזוג שינויים ל- Gerrit, עדכן את ספריית העבודה המקומית שלך, ואז השתמש repo prune כדי להסיר בבטחה ענפי נושא מעופשים:

repo sync
repo prune

מחיקת לקוחות

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

rm -rf WORKING_DIRECTORY

מחיקת לקוח מוחקת לצמיתות את כל השינויים שלא העלתם לבדיקה.