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: همگامسازی پروژههای دیگر را ادامه دهید، حتی اگر پروژه همگامسازی نشد. -
-j 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 را بررسی کنید، یک شاخه جدید راه اندازی کنید و سپس آن را ادغام کنید.
ساختار مخزن Git
برای اندروید، مخازن Git (پروژه ها) تودرتو نیستند. هر پروژه با یک دایرکتوری خاص در درخت منبع مرتبط است و همه زیر شاخه ها و فایل های زیر آن دایرکتوری بخشی از همان پروژه هستند. از استفاده از ویژگی git submodule Repo برای توسعه اندروید خودداری کنید.