Repo با ساده کردن کار در چندین مخزن Git را تکمیل می کند. برای توضیح رابطه بین Repo و Git، به ابزارهای کنترل منبع مراجعه کنید. برای جزئیات بیشتر در مورد Repo، Repo README را ببینید
استفاده از رپو به شکل زیر است:
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 و فایل های استاندارد مانیفست اندروید ایجاد می کند.
گزینه ها:
-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
: برای تکمیل سریعتر، همگامسازی را بین رشتهها تقسیم کنید. مطمئن شوید که دستگاه خود را تحت تأثیر قرار نمی دهید - مقداری از CPU را برای کارهای دیگر در نظر بگیرید. برای مشاهده تعداد CPUهای موجود، ابتداnproc --all
اجرا کنید. -
-q
: با سرکوب پیامهای وضعیت، بیصدا اجرا شود. -
-s
: با یک ساخت خوب شناخته شده که توسط عنصرmanifest-server
در مانیفست فعلی مشخص شده است، همگام سازی کنید.
برای گزینههای بیشتر، repo help sync
اجرا کنید.
آپلود کنید
repo upload [project-list]
تغییرات را در سرور بررسی آپلود می کند. برای پروژه های مشخص شده، Repo شعب محلی را با شاخه های راه دور که در آخرین همگام سازی Repo به روز شده اند مقایسه می کند. Repo از شما می خواهد که یک یا چند شعبه را که برای بررسی آپلود نشده اند انتخاب کنید.
سپس تمام تعهدات روی شاخه های انتخاب شده از طریق یک اتصال HTTPS به Gerrit منتقل می شود. برای فعال کردن مجوز آپلود، باید رمز عبور HTTPS را پیکربندی کنید. برای ایجاد یک جفت نام کاربری/گذرواژه جدید برای استفاده از طریق HTTPS، از تولیدکننده رمز عبور بازدید کنید.
هنگامی که Gerrit داده های شی را روی سرور خود دریافت می کند، هر commit را به یک تغییر تبدیل می کند تا بازبینان بتوانند در مورد یک commit خاص نظر دهند. برای ترکیب چند چک پوینت در یک کامیت واحد، قبل از اجرای آپلود از git rebase -i
استفاده کنید.
اگر repo upload
بدون آرگومان اجرا کنید، تمام پروژهها را برای تغییراتی که برای آپلود انجام میشود جستجو میکند.
برای ویرایش تغییرات پس از آپلود، از ابزاری مانند git rebase -i
یا git commit --amend
استفاده کنید تا commit های محلی خود را به روز کنید. پس از تکمیل ویرایش های شما:
- بررسی کنید که شعبه به روز شده، شعبه فعلی بررسی شده است.
-
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
) استفاده کنید.
برای تغییرات مرتبط، مفید است که همه CL ها را در یک موضوع نگه دارید. هنگام آپلود با --topic=TOPIC
می توانید نام موضوع را اضافه کنید. یا برای تنظیم نام موضوع با نام شعبه محلی، فقط -t
پاس کنید.
تفاوت
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 و index هم همینطور |
الف | اضافه شد | نه در HEAD، در شاخص |
م | اصلاح شد | در HEAD، در شاخص اصلاح شده است |
D | حذف شد | در HEAD، نه در شاخص |
آر | تغییر نام داد | نه در HEAD، مسیر در شاخص تغییر کرد |
سی | کپی شده | نه در HEAD، از دیگری در فهرست کپی شده است |
تی | حالت تغییر کرد | همان محتوا در HEAD و فهرست، حالت تغییر کرد |
U | ادغام نشد | تضاد بین HEAD و شاخص؛ وضوح مورد نیاز |
در ستون دوم، یک حرف کوچک نشان می دهد که دایرکتوری کار با فهرست تفاوت دارد.
نامه | معنی | توضیحات |
---|---|---|
- | جدید/ناشناس | نه در شاخص، در درخت کار |
متر | اصلاح شد | در فهرست، در درخت کار، اصلاح شده است |
د | حذف شد | در شاخص نه در درخت کار |
رسیدگی به خطاهای مخزن
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 start
در ابتدای جلسه اجرا نمی شد repo: error: no branches ready for upload
ظاهر نمی شود. برای بازیابی، می توانید شناسه commit را بررسی کنید، یک شاخه جدید راه اندازی کنید و سپس آن را ادغام کنید.