Repo Command Reference

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

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 מותקן, אתה יכול למצוא את התיעוד העדכני ביותר שמתחיל בסיכום של כל הפקודות על ידי הפעלת:

repo help

אתה יכול לראות מידע מפורט על כל פקודה על ידי הפעלת זה בתוך עץ Repo:

repo help command

לדוגמה, הפקודה הבאה מניבה תיאור ורשימת אפשרויות עבור הארגומנט init של Repo, אשר מאתחל את Repo בספרייה הנוכחית. (ראה 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 הנותרות, ספריית העבודה הנוכחית חייבת להיות ספריית האב של .repo/ או ספריית משנה של ספריית האב.

סינכרון

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 הוא הסניף הנמכר כעת בספריית הפרויקט המקומית. אם הסניף המקומי לא עוקב אחר סניף במאגר המרוחק, אז לא מתרחש סנכרון עבור הפרויקט.

  • אם פעולת Git rebase גורמת להתנגשויות מיזוג, השתמש בפקודות Git הרגילות (לדוגמה, git rebase --continue ) כדי לפתור את ההתנגשויות.

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

להלן אפשרויות מפתח. ראה repo help sync למידע נוסף:

  • -c : אחזר רק את ענף המניפסט הנוכחי מהשרת.

  • -d : העבר את הפרויקטים שצוינו בחזרה לגרסה של המניפסט. זה מועיל אם הפרויקט נמצא כעת בענף נושא, אך יש צורך זמנית בתיקון המניפסט.

  • -f : המשך לסנכרן פרויקטים אחרים גם אם פרויקט לא מצליח להסתנכרן.

  • -j threadcount : פצל את הסנכרון בין שרשורים להשלמה מהירה יותר. ודא שאתה לא מציף את המחשב שלך - השאר מעבד מסוים שמור למשימות אחרות. כדי לראות את מספר המעבדים הזמינים, הפעל תחילה: nproc --all

  • -q : הפעל בשקט על ידי דיכוי הודעות סטטוס.

  • -s : סנכרון למבנה טוב ידוע כפי שצוין על ידי רכיב manifest-server במניפסט הנוכחי.

להעלות

repo upload [project-list]

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

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

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

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

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

  • ודא שהסניף המעודכן הוא הסניף שבו נשלחה כעת.
  • עבור כל 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 replacments
    # 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 לספריית הפלטפורמה/build שלך:

repo download platform/build 23823

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

הערה: ישנם עיכובים בשכפול לכל השרתים ברחבי העולם, כך שיש השהיית שיקוף קלה בין המועד שבו שינוי גלוי באינטרנט ב- Gerrit לבין repo download יכולה למצוא את השינוי עבור כל המשתמשים.

לכולם

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 הפקודה לא הופעלה בתחילת ההפעלה. כדי לשחזר, אתה יכול לבדוק את מזהה ה-commit, להתחיל סניף חדש ואז למזג אותו.