הפניה לפיקוד ריפו

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

repo help init

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

repo command --help
לדוגמה:
repo init --help

init

repo init -u url [options]

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

אפשרויות:

  • -u : מציין כתובת שממנו ניתן לאחזר מאגר מניפסט. המניפסט המשותף נמצא בבית https://android.googlesource.com/platform/manifest .
  • -m : בחר קובץ מניפסט בתוך המאגר. אם אין שם מניפסט נבחר, ברירת המחדל היא default.xml .
  • -b : לציין גרסה, כלומר, בפרט manifest-branch .

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

להעלות

repo upload [project-list]

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

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

כאשר חריט מקבל את נתוני האובייקט דרך השרת שלו, זה הופך כל 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]

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

הורד

repo download target change

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

לדוגמה, כדי להוריד השינוי 23,823 לתוך ספריית פלטפורמה / לבנות שלך:

repo download platform/build 23823

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

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