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

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

זְרִימָה

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

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

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

ניקיון לקוחות

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

repo sync
repo prune

מחיקת לקוחות

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

rm -rf WORKING_DIRECTORY

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