רפו משלים את 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 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/
משנה של ספריית האב.
סינכרון
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
הואbranch
שנמצא כעת במדריך הפרויקטים המקומי. אם הסניף המקומי אינו עוקב אחר ענף במאגר המרוחק, לא מתרחש סנכרון עבור הפרויקט.אם פעולת ה- rebase של Git מביאה למזג קונפליקטים, השתמש בפקודות ה- 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.
כשגריט מקבל את נתוני האובייקט דרך השרת שלו, הוא הופך כל התחייבות לשינוי כך שבודקים יכולים להגיב על התחייבות ספציפית. כדי לשלב מספר התחייבויות של מחסומים להתחייבות אחת, השתמש ב- git rebase -i
לפני שאתה מריץ את ההעלאה.
אם אתה מריץ repo upload
ללא ויכוחים, הוא מחפש בכל הפרויקטים אחר שינויים להעלאה.
כדי לערוך שינויים לאחר git rebase -i
, השתמש בכלי כמו git rebase -i
או git commit --amend
כדי לעדכן את ההתחייבויות המקומיות שלך. לאחר סיום העריכה שלך:
- ודא שהסניף המעודכן הוא הסניף שנבדק כעת.
- עבור כל התחייבות בסדרה, הזן את מזהה השינוי של חריט בתוך הסוגריים:
# 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
מוריד את השינוי שצוין ממערכת הבדיקה והופך אותו לזמין במדריך העבודה המקומי של הפרויקט שלך.
לדוגמה, כדי להוריד את שינוי 23823 לספריית הפלטפורמה / build שלך:
repo download platform/build 23823
הפעלת 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 | שונה | באינדקס, בעץ העבודה, שונה |
ד | נמחק | באינדקס, לא בעץ עבודה |