התייחסות לפקודת Repo

Repo משלים את Git על ידי פישוט העבודה על פני מספר מאגרים. להסבר על הקשר בין Repo ו-Git, ראה כלי בקרת מקור . לפרטים נוספים על Repo, עיין ב- Repo README

השימוש ב-Repo מתנהל בצורה הבאה:

repo command options

אלמנטים אופציונליים מוצגים בסוגריים []. לדוגמה, פקודות רבות לוקחות project-list כארגומנט. ניתן לציין project-list כרשימה של שמות או רשימת נתיבים לספריות מקור מקומיות עבור הפרויקטים:

repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]

עֶזרָה

repo help

מספק עזרה בפקודה repo . אתה יכול לראות מידע מפורט על פקודת Repo ספציפית תוך ציון פקודה כאפשרות:

repo help command

לדוגמה, הפקודה הבאה מניבה תיאור ורשימת אפשרויות עבור הפקודה init :

repo help init

לחלופין, כדי לראות רק את רשימת האפשרויות הזמינות עבור פקודה, הרץ:

repo command --help

לדוגמה:

repo init --help

init

repo init -u url [options]

מתקין את Repo בספרייה הנוכחית. פקודה זו יוצרת ספריית .repo/ עם מאגרי Git עבור קוד המקור של Repo וקובצי המניפסט הסטנדרטיים של Android.

אפשרויות:

  • -u : ציין כתובת אתר שממנה יש לאחזר מאגר מניפסט. המניפסט המשותף נמצא בכתובת https://android.googlesource.com/platform/manifest .

  • -m : בחר קובץ מניפסט בתוך המאגר. אם לא נבחר שם מניפסט, ברירת המחדל היא default.xml .

  • -b : ציין גרסה, כלומר manifest-branch מסוים.

סינכרון

repo sync [project-list]

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

כאשר אתה מפעיל repo sync , זה מה שקורה:

  • אם הפרוייקט מעולם לא עבר סנכרון, אז repo sync שווה ערך ל- git clone ; כל הסניפים במאגר המרוחק מועתקים לספריית הפרויקט המקומית.

  • אם הפרויקט עבר סנכרון בעבר, אז repo sync שווה ערך ל:

    git remote update
    git rebase origin/branch
    

    היכן branch הוא הסניף הנוכחי שעזב בספריית הפרויקט המקומית. אם הסניף המקומי לא עוקב אחר סניף במאגר המרוחק, אז לא מתרחש סנכרון עבור הפרויקט.

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

אפשרויות מפתח:

  • -c : אחזר רק את ענף המניפסט הנוכחי מהשרת.
  • -d : העבר את הפרויקטים שצוינו בחזרה לגרסה של המניפסט. אפשרות זו שימושית אם הפרוייקט נמצא בענף נושא, אך יש צורך בתיקון המניפסט באופן זמני.
  • -f : המשך לסנכרן פרויקטים אחרים גם אם פרויקט לא מצליח להסתנכרן.
  • threadcount : פצל את הסנכרון בין אשכולות להשלמתה מהירה יותר. ודא שאתה לא מציף את המחשב שלך - השאר מעבד מסוים שמור למשימות אחרות. כדי לראות את מספר המעבדים הזמינים, הפעל תחילה nproc --all .
  • -q : הפעל בשקט על ידי דיכוי הודעות סטטוס.
  • -s : סנכרון למבנה טוב ידוע כפי שצוין על ידי רכיב ה- manifest-server במניפסט הנוכחי.

לאפשרויות נוספות, הפעל את repo help sync .

להעלות

repo upload [project-list]

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

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

כאשר חריט מקבל את נתוני האובייקט דרך השרת שלו, זה הופך כל commit לשינוי כך שהבודקים יכולים להגיב על commit ספציפי. כדי לשלב מספר התחייבויות של נקודת ביקורת ל-commit אחד, השתמש git rebase -i לפני שאתה מפעיל את ההעלאה.

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

כדי לערוך שינויים לאחר העלאתם, השתמש בכלי כמו git rebase -i או git commit --amend כדי לעדכן את המחויבות המקומיות שלך. לאחר השלמת העריכות שלך:

  • ודא שהסניף המעודכן הוא הסניף הנוכחי שעזב.
  • השתמש ב- repo upload --replace PROJECT כדי לפתוח את עורך התאמת השינוי.
  • עבור כל commit בסדרה, הזן את מזהה השינוי של Gerrit בתוך הסוגריים:

    # Replacing from branch foo
    [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific...
    [ 2829 ] ec18b4ba Update proto client to support patch set replacements
    # Insert change numbers in the brackets to add a new patch set.
    # To create a new change record, leave the brackets empty.
    

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

אם ברצונך להעלות רק את סניף Git שהוצא כעת, השתמש בדגל --current-branch (או בקיצור --cbr ).

הבדל

repo diff [project-list]

מציג שינויים בולטים בין ה-commit לעץ העבודה באמצעות git diff .

הורד

repo download target change

מוריד את השינוי שצוין ממערכת הסקירה והופך אותו לזמין בספריית העבודה המקומית של הפרויקט שלך.

לדוגמה, כדי להוריד את השינוי 23823 לספריית platform/build שלך:

repo download platform/build 23823

הפעלת repo sync מסירה את כל ההתחייבויות שאוחזרו עם repo download . או שאתה יכול לבדוק את הסניף המרוחק באמצעות git checkout m/main .

לכולם

repo forall [project-list] -c command

מבצע את פקודת המעטפת הנתונה בכל פרויקט. משתני הסביבה הנוספים הבאים זמינים על ידי repo forall :

  • REPO_PROJECT מוגדר לשם הייחודי של הפרויקט.
  • REPO_PATH הוא הנתיב ביחס לשורש הלקוח.
  • REPO_REMOTE הוא השם של המערכת המרוחקת מהמניפסט.
  • REPO_LREV הוא שם הגרסה מהמניפסט, מתורגם לסניף מעקב מקומי. השתמש במשתנה זה אם אתה צריך להעביר את גרסת המניפסט לפקודת Git המבוצעת מקומית.
  • REPO_RREV הוא שם הגרסה מהמניפסט, בדיוק כפי שנכתב במניפסט.

אפשרויות:

  • -c : פקודה וארגומנטים לביצוע. הפקודה מוערכת באמצעות /bin/sh וכל הארגומנטים לאחריה מועברים כפרמטרים מיקום מעטפת.
  • -p : הצג את כותרות הפרויקט לפני הפלט של הפקודה שצוינה. זה מושג על ידי קשירת צינורות לזרמי stdin, stdout ו-sterr של הפקודה, והעברת כל הפלט לזרם רציף המוצג בהפעלת איתור יחיד.
  • -v : הצג הודעות שהפקודה כותבת ל-stderr.

לִגזוֹם

repo prune [project-list]

גזם (מוחק) נושאים שכבר ממוזגים.

הַתחָלָה

repo start branch-name [project-list]

מתחיל ענף חדש לפיתוח, החל מהגרסה המצוינת במניפסט.

הארגומנט BRANCH_NAME מספק תיאור קצר של השינוי שאתה מנסה לבצע בפרויקטים. אם אינך יודע, שקול להשתמש בשם default .

הארגומנט project-list מציין אילו פרויקטים משתתפים בענף נושא זה.

סטָטוּס

repo status [project-list]

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

כדי לראות את הסטטוס של הסניף הנוכחי בלבד, הפעל repo status . . פרטי המצב מופיעים לפי פרויקט. עבור כל קובץ בפרויקט, נעשה שימוש בקוד בן שתי אותיות.

בעמודה הראשונה, אות גדולה מציינת כיצד אזור ההיערכות שונה ממצב המחויב האחרון.

מִכְתָב מַשְׁמָעוּת תיאור
- ללא שינוי אותו דבר ב-HEAD ובאינדקס
א נוסף לא ב-HEAD, באינדקס
M שונה ב-HEAD, שונה באינדקס
ד נמחק ב-HEAD, לא באינדקס
ר שונה שם לא ב-HEAD, הנתיב השתנה באינדקס
ג מוּעֲתָק לא ב-HEAD, הועתק מאחר באינדקס
ט המצב השתנה אותו תוכן ב-HEAD ובאינדקס, המצב השתנה
U לא מיזוג התנגשות בין HEAD לאינדקס; נדרשת רזולוציה

בעמודה השנייה, אות קטנה מציינת כיצד ספריית העבודה שונה מהאינדקס.

מִכְתָב מַשְׁמָעוּת תיאור
- חדש/לא ידוע לא באינדקס, בעץ העבודה
M שונה באינדקס, בעץ העבודה, שונה
ד נמחק באינדקס, לא בעץ העבודה

טיפול בשגיאות ריפו

git commit -a # Commit local changes first so they aren't lost.
repo start branch-name # Start the branch
git reset --hard HEAD@{1} # And reset the branch so that it matches the commit before repo start
repo upload .

repo: error: no branches ready for upload מופיע כאשר repo start הפקודה לא הופעלה בתחילת ההפעלה. כדי לשחזר, אתה יכול לבדוק את מזהה ההתחייבות, להתחיל סניף חדש ואז למזג אותו.