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