| REPO(1) | Repo Manual | REPO(1) |
نام (NAME)
repo-sync - همگامسازی درخت کاری با مخازن دوردست
خلاصه دستور (SYNOPSIS)
repo sync [<project>...]
توضیحات (DESCRIPTION)
چکیده
بهروزرسانی درخت کاری به آخرین بازنگری
گزینهها (OPTIONS)
- -h, --help
- نمایش این پیام راهنما و خروج
- -j JOBS, --jobs=JOBS
- تعداد کارهای موازی برای اجرا (پیشفرض: بر اساس تعداد هستههای پردازنده)
- --jobs-network=JOBS
- تعداد کارهای شبکه برای اجرای موازی (پیشفرض --jobs یا ۱). نادیده گرفته میشود مگر اینکه --no-interleaved تنظیم شده باشد
- --jobs-checkout=JOBS
- تعداد کارهای محلی وارسی (checkout) برای اجرای موازی (پیشفرض --jobs یا ۸). نادیده گرفته میشود مگر اینکه --nointerleaved تنظیم شده باشد
- -f, --force-broken
- گزینه منسوخشده (در آینده حذف خواهد شد)
- --fail-fast
- توقف همگامسازی پس از وقوع نخستین خطا
- --force-sync
- بازنویسی دایرکتوری گیت موجود در صورت نیاز به اشاره به یک دایرکتوری شیء متفاوت. هشدار: این کار ممکن است باعث از دست رفتن دادهها شود
- --force-checkout
- اجبار به وارسی (checkout) حتی در صورت دور ریخته شدن تغییرات ثبتنشده. هشدار: این کار ممکن است باعث از دست رفتن دادهها شود
- --force-remove-dirty
- حذف اجباری پروژههای دارای تغییرات ثبتنشده در صورتی که دیگر در مانیفست وجود نداشته باشند. هشدار: این کار ممکن است باعث از دست رفتن دادهها شود
- --rebase
- بازنشانی (rebase) کامیتهای محلی بدون توجه به اینکه منتشر شدهاند یا خیر
- -l, --local-only
- تنها بهروزرسانی درخت کاری، بدون دریافت (fetch)
- --no-manifest-update, --nmu
- استفاده از مانیفست وارسیشده موجود به همان صورت فعلی (عدم بهروزرسانی به آخرین بازنگری)
- --interleaved
- دریافت و وارسی پروژهها به صورت موازی (پیشفرض)
- --no-interleaved
- دریافت و وارسی پروژهها در چند مرحله
- -n, --network-only
- تنها دریافت، بدون بهروزرسانی درخت کاری
- -d, --detach
- جدا کردن پروژهها و بازگرداندن به بازنگری مانیفست
- -c, --current-branch
- تنها دریافت شاخه جاری از سرور
- --no-current-branch
- دریافت تمام شاخهها از سرور
- -m NAME.xml, --manifest-name=NAME.xml
- مانیفست موقت برای استفاده در این همگامسازی
- --clone-bundle
- فعالسازی استفاده از /clone.bundle روی HTTP/HTTPS
- --no-clone-bundle
- غیرفعالسازی استفاده از /clone.bundle روی HTTP/HTTPS
- -u MANIFEST_SERVER_USERNAME, --manifest-server-username=MANIFEST_SERVER_USERNAME
- نام کاربری برای احراز هویت در سرور مانیفست
- -p MANIFEST_SERVER_PASSWORD, --manifest-server-password=MANIFEST_SERVER_PASSWORD
- گذرواژه برای احراز هویت در سرور مانیفست
- --fetch-submodules
- دریافت زیرماژولها از سرور
- --use-superproject
- استفاده از ابرپروژه مانیفست برای همگامسازی پروژهها؛ شامل گزینه -c میشود
- --no-use-superproject
- غیرفعالسازی استفاده از ابرپروژههای مانیفست
- دریافت برچسبها
- --no-tags
- عدم دریافت برچسبها (پیشفرض)
- --optimized-fetch
- تنها دریافت پروژههای تثبیتشده روی sha1 در صورتی که آن بازنگری در سیستم محلی وجود نداشته باشد
- --retry-fetches=RETRY_FETCHES
- تعداد دفعات تلاش مجدد برای دریافت در خطاهای گذرا
- --prune
- حذف ارجاعهایی که دیگر روی مخزن دوردست وجود ندارند (پیشفرض)
- --no-prune
- عدم حذف ارجاعهایی که دیگر روی مخزن دوردست وجود ندارند
- --auto-gc
- اجرای زبالهروبی (garbage collection) روی تمام پروژههای همگامشده
- --no-auto-gc
- عدم اجرای زبالهروبی روی هیچیک از پروژهها (پیشفرض)
- -s, --smart-sync
- همگامسازی هوشمند با استفاده از مانیفست برگرفته از آخرین ساخت موفق شناختهشده
- -t SMART_TAG, --smart-tag=SMART_TAG
- همگامسازی هوشمند با استفاده از مانیفست برگرفته از یک برچسب شناختهشده
گزینههای ثبت وقایع (Logging options):
- -v, --verbose
- نمایش کامل خروجی با جزئیات
- -q, --quiet
- تنها نمایش خطاها
گزینههای چندمانیفستی (Multi-manifest options):
- --outer-manifest
- شروع عملیات از بیرونیترین مانیفست
- --no-outer-manifest
- عدم انجام عملیات روی مانیفستهای بیرونی
- --this-manifest-only
- تنها انجام عملیات روی این (زیر)مانیفست
- --no-this-manifest-only, --all-manifests
- انجام عملیات روی این مانیفست و زیرمانیفستهای آن
گزینههای نسخه repo (repo Version options):
- --no-repo-verify
- عدم اعتبارسنجی کد منبع repo
قلابهای پس از همگامسازی (post-sync hooks):
- --no-verify
- عدم اجرای قلاب پس از همگامسازی.
- --verify
- اجرای قلاب پس از همگامسازی بدون درخواست تایید.
- --ignore-hooks
- در صورت شکست قلابهای پس از همگامسازی عملیات متوقف نشود.
برای مشاهده راهنمای تفصیلی دستور `repo help sync` را اجرا کنید.
جزئیات (DETAILS)
دستور 'repo sync' دایرکتوریهای محلی پروژه را با مخازن دوردست مشخصشده در مانیفست همگامسازی میکند. اگر یک پروژه محلی هنوز وجود نداشته باشد، دایرکتوری محلی جدیدی را از مخزن دوردست کلون کرده و شاخههای ردیابی را مطابق با مانیفست برپا میکند. اگر پروژه محلی از قبل موجود باشد، 'repo sync' شاخههای دوردست را بهروزرسانی کرده و هرگونه تغییر محلی جدید را روی تغییرات جدید دوردست بازنشانی (rebase) میکند.
دستور 'repo sync' تمام پروژههای مشخصشده در خط فرمان را همگامسازی خواهد کرد. پروژهها را میتوان با نام یا با مسیر نسبی یا مطلق به دایرکتوری محلی پروژه مشخص کرد. اگر هیچ پروژهای تعیین نشود، 'repo sync' تمام پروژههای فهرستشده در مانیفست را همگام میکند.
گزینه -d/--detach میتواند برای بازگرداندن پروژههای مشخصشده به بازنگری مانیفست استفاده شود. این گزینه بهویژه زمانی مفید است که پروژه روی یک شاخه موضوعی (topic branch) قرار دارد اما موقتاً به بازنگری مانیفست نیاز است.
گزینه -s/--smart-sync میتواند برای همگامسازی با یک ساخت موفق شناختهشده که توسط عنصر manifest-server در مانیفست فعلی مشخص شده استفاده شود. گزینه -t/--smart-tag مشابه است و امکان تعیین یک برچسب/عنوان سفارشی را فراهم میکند.
گزینههای --manifest-server-username (-u) و --manifest-server-password (-p) میتوانند برای تعیین نام کاربری و گذرواژه جهت احراز هویت با سرور مانیفست هنگام استفاده از گزینه -s یا -t به کار روند.
اگر -u و -p هنگام استفاده از گزینه -s یا -t مشخص نشوند، 'repo sync' تلاش میکند اطلاعات احراز هویت سرور مانیفست را از فایل .netrc کاربر بخواند.
دستور 'repo sync' از اطلاعات احراز هویت -u/-p یا .netrc استفاده نخواهد کرد اگر سرور مانیفست مشخصشده در فایل مانیفست از قبل شامل اطلاعات اعتباری باشد.
بهطور پیشفرض، تمام پروژهها همگامسازی میشوند. گزینه --fail-fast میتواند برای توقف همگامسازی در سریعترین زمان ممکن به محض مواجهه با شکست در اولین پروژه به کار رود.
از گزینه --force-sync میتوان برای بازنویسی دایرکتوریهای گیت موجود در صورتی که قبلاً به دایرکتوری شیء متفاوتی متصل شده باشند استفاده کرد. هشدار: این کار ممکن است باعث از دست رفتن دادهها شود زیرا ممکن است هنگام بازنویسی، ارجاعها (refs) حذف شوند.
گزینه --force-checkout میتواند برای اجبار گیت به تعویض بازنگریها استفاده شود، حتی اگر نمایهساز (index) یا درخت کاری با HEAD تفاوت داشته باشد و فایلهای ردیابینشده وجود داشته باشند. هشدار: این کار ممکن است باعث از دست رفتن دادهها شود زیرا ممکن است تغییرات ثبتنشده حذف شوند.
گزینه --force-remove-dirty میتواند برای حذف پروژههای قبلاً استفادهشده با تغییرات ثبتنشده به کار رود. هشدار: این کار ممکن است باعث از دست رفتن دادهها شود زیرا ممکن است تغییرات ثبتنشده همراه با پروژههایی که دیگر در مانیفست وجود ندارند حذف شوند.
گزینه --no-clone-bundle هرگونه تلاش برای استفاده از $URL/clone.bundle جهت راهاندازی اولیه مخزن گیت جدید از یک فایل بسته (bundle) قابل ازسرگیری روی شبکه تحویل محتوا (CDN) را غیرفعال میکند. این کار ممکن است در صورت بروز مشکل در کلاینت پایتون HTTP محلی یا پیکربندی پروکسی، هنگامی که باینری Git کار میکند، ضروری باشد.
گزینه --fetch-submodules دریافت زیرماژولهای گیت یک پروژه را از سرور فعال میکند.
گزینه -c/--current-branch میتواند تنها برای دریافت اشیایی که روی شاخه مشخصشده توسط بازنگری پروژه هستند استفاده شود.
گزینه --optimized-fetch میتواند برای دریافت پروژههایی استفاده شود که روی یک بازنگری sha1 تثبیت شدهاند، در صورتی که آن بازنگری sha1 هنوز به صورت محلی وجود نداشته باشد.
از گزینه --prune میتوان برای حذف هرگونه ارجاعی (refs) که دیگر روی مخزن دوردست وجود ندارد استفاده کرد.
گزینه --auto-gc میتواند برای فعالسازی زبالهروبی روی تمام پروژهها به کار رود. بهطور پیشفرض، repo زبالهروبی را اجرا نمیکند.
اتصالات SSH
اگر دستکم یکی از نشانیهای دوردست پروژه از اتصال SSH استفاده کند (با ساختارهای ssh://، git+ssh:// یا user@host:path)، برنامه repo هنگام اتصال به آن میزبان به صورت خودکار گزینه SSH ControlMaster را فعال میکند. این قابلیت به دیگر پروژهها در همان نشست 'repo sync' اجازه میدهد از همان تونل SSH مجدداً استفاده کنند و سربار برپایی اتصال کاهش یابد.
برای غیرفعالسازی این رفتار در پلتفرمهای یونیکس، متغیر محیطی GIT_SSH را روی 'ssh' تنظیم کنید. برای نمونه:
- export GIT_SSH=ssh repo sync
سازگاری
این قابلیت در ویندوز به دلیل عدم پشتیبانی از سوکتهای دامنه یونیکس به صورت خودکار غیرفعال است.
این قابلیت با بازنویسیهای url.insteadof در فایل ~/.gitconfig کاربر سازگار نیست. برنامه 'repo sync' در حال حاضر قادر نیست عمل بازنویسی را به قدر کافی زود انجام دهد تا تونل ControlMaster برقرار شود.
اگر دیمن SSH دوردست نرمافزار Gerrit Code Review باشد، نگارش 2.0.10 یا بالاتر برای رفع باگ پروتکل سمت سرور الزامی است.
| August 2025 | repo sync |