مرجع فرمان Repo

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 نصب می شود، می توانید آخرین مستندات را که با خلاصه ای از تمام دستورات شروع می شود با اجرای:

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 و فایل های استاندارد مانیفست اندروید ایجاد می کند.

گزینه ها:

  • -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 ، شاخه ای است که در حال حاضر در فهرست پروژه محلی بررسی شده است. اگر شعبه محلی یک شاخه را در مخزن راه دور ردیابی نمی کند، هیچ هماهنگی برای پروژه رخ نمی دهد.

  • اگر عملیات rebase Git منجر به تداخل ادغام شد، از دستورات Git معمولی (به عنوان مثال، git rebase --continue ) برای رفع تداخل استفاده کنید.

پس از اجرای موفقیت آمیز repo sync ، کد در پروژه های مشخص شده به روز شده و با کد موجود در مخزن راه دور همگام سازی می شود.

در اینجا گزینه های کلیدی وجود دارد. برای اطلاعات بیشتر repo help sync مراجعه کنید:

  • -c : فقط شاخه مانیفست فعلی را از سرور واکشی کنید.

  • -d : پروژه های مشخص شده را به نسخه مانیفست بازگردانید. اگر پروژه در حال حاضر در یک شاخه موضوعی است، اما به طور موقت به ویرایش مانیفست نیاز است، این کار مفید است.

  • -f : همگام‌سازی پروژه‌های دیگر را ادامه دهید، حتی اگر پروژه همگام‌سازی نشد.

  • -j threadcount : برای تکمیل سریع‌تر، همگام‌سازی را بین رشته‌ها تقسیم کنید. مطمئن شوید که دستگاه خود را تحت تأثیر قرار نمی دهید - مقداری از CPU را برای کارهای دیگر در نظر بگیرید. برای مشاهده تعداد CPUهای موجود، ابتدا nproc --all را اجرا کنید

  • -q : با سرکوب پیام‌های وضعیت، بی‌صدا اجرا شود.

  • -s : با یک ساخت خوب شناخته شده که توسط عنصر manifest-server در مانیفست فعلی مشخص شده است، همگام سازی کنید.

بارگذاری

repo upload [project-list]

برای پروژه های مشخص شده، Repo شعب محلی را با شاخه های راه دور که در آخرین همگام سازی Repo به روز شده اند مقایسه می کند. Repo از شما می خواهد که یک یا چند شعبه را که برای بررسی آپلود نشده اند انتخاب کنید.

سپس تمام تعهدات روی شاخه های انتخاب شده از طریق یک اتصال HTTPS به Gerrit منتقل می شود. برای فعال کردن مجوز آپلود، باید رمز عبور HTTPS را پیکربندی کنید. برای ایجاد یک جفت نام کاربری/رمز عبور جدید برای استفاده از طریق HTTPS، از Password Generator دیدن کنید.

هنگامی که Gerrit داده های شی را روی سرور خود دریافت می کند، هر commit را به یک تغییر تبدیل می کند تا بازبینان بتوانند در مورد یک commit خاص نظر دهند. برای ترکیب چند چک پوینت در یک کامیت واحد، قبل از اجرای آپلود از git rebase -i استفاده کنید.

اگر repo upload را بدون آرگومان اجرا کنید، تمام پروژه‌ها را برای تغییراتی که برای آپلود انجام می‌شود جستجو می‌کند.

برای ویرایش تغییرات پس از آپلود، از ابزاری مانند git rebase -i یا git commit --amend کنید تا commit های محلی خود را به روز کنید. پس از تکمیل ویرایش های شما:

  • بررسی کنید که شعبه به‌روزرسانی‌شده، شاخه‌ای است که در حال حاضر بررسی شده است.
  • برای هر 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 و 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 را بررسی کنید، یک شاخه جدید راه اندازی کنید و سپس آن را ادغام کنید.