REPO(1) Repo Manual REPO(1)

repo-sync - همگام‌سازی درخت کاری با مخازن دوردست

repo sync [<project>...]

چکیده

به‌روزرسانی درخت کاری به آخرین بازنگری

نمایش این پیام راهنما و خروج
تعداد کارهای موازی برای اجرا (پیش‌فرض: بر اساس تعداد هسته‌های پردازنده)
تعداد کارهای شبکه برای اجرای موازی (پیش‌فرض --jobs یا ۱). نادیده گرفته می‌شود مگر اینکه --no-interleaved تنظیم شده باشد
تعداد کارهای محلی وارسی (checkout) برای اجرای موازی (پیش‌فرض --jobs یا ۸). نادیده گرفته می‌شود مگر اینکه --nointerleaved تنظیم شده باشد
گزینه منسوخ‌شده (در آینده حذف خواهد شد)
توقف همگام‌سازی پس از وقوع نخستین خطا
بازنویسی دایرکتوری گیت موجود در صورت نیاز به اشاره به یک دایرکتوری شیء متفاوت. هشدار: این کار ممکن است باعث از دست رفتن داده‌ها شود
اجبار به وارسی (checkout) حتی در صورت دور ریخته شدن تغییرات ثبت‌نشده. هشدار: این کار ممکن است باعث از دست رفتن داده‌ها شود
حذف اجباری پروژه‌های دارای تغییرات ثبت‌نشده در صورتی که دیگر در مانیفست وجود نداشته باشند. هشدار: این کار ممکن است باعث از دست رفتن داده‌ها شود
بازنشانی (rebase) کامیت‌های محلی بدون توجه به اینکه منتشر شده‌اند یا خیر
تنها به‌روزرسانی درخت کاری، بدون دریافت (fetch)
استفاده از مانیفست وارسی‌شده موجود به همان صورت فعلی (عدم به‌روزرسانی به آخرین بازنگری)
دریافت و وارسی پروژه‌ها به صورت موازی (پیش‌فرض)
دریافت و وارسی پروژه‌ها در چند مرحله
تنها دریافت، بدون به‌روزرسانی درخت کاری
جدا کردن پروژه‌ها و بازگرداندن به بازنگری مانیفست
تنها دریافت شاخه جاری از سرور
دریافت تمام شاخه‌ها از سرور
مانیفست موقت برای استفاده در این همگام‌سازی
فعال‌سازی استفاده از /clone.bundle روی HTTP/HTTPS
غیرفعال‌سازی استفاده از /clone.bundle روی HTTP/HTTPS
نام کاربری برای احراز هویت در سرور مانیفست
گذرواژه برای احراز هویت در سرور مانیفست
دریافت زیرماژول‌ها از سرور
استفاده از ابرپروژه مانیفست برای همگام‌سازی پروژه‌ها؛ شامل گزینه -c می‌شود
غیرفعال‌سازی استفاده از ابرپروژه‌های مانیفست
دریافت برچسب‌ها
عدم دریافت برچسب‌ها (پیش‌فرض)
تنها دریافت پروژه‌های تثبیت‌شده روی sha1 در صورتی که آن بازنگری در سیستم محلی وجود نداشته باشد
تعداد دفعات تلاش مجدد برای دریافت در خطاهای گذرا
حذف ارجاع‌هایی که دیگر روی مخزن دوردست وجود ندارند (پیش‌فرض)
عدم حذف ارجاع‌هایی که دیگر روی مخزن دوردست وجود ندارند
اجرای زباله‌روبی (garbage collection) روی تمام پروژه‌های همگام‌شده
عدم اجرای زباله‌روبی روی هیچ‌یک از پروژه‌ها (پیش‌فرض)
همگام‌سازی هوشمند با استفاده از مانیفست برگرفته از آخرین ساخت موفق شناخته‌شده
همگام‌سازی هوشمند با استفاده از مانیفست برگرفته از یک برچسب شناخته‌شده

نمایش کامل خروجی با جزئیات
تنها نمایش خطاها

شروع عملیات از بیرونی‌ترین مانیفست
عدم انجام عملیات روی مانیفست‌های بیرونی
تنها انجام عملیات روی این (زیر)مانیفست
انجام عملیات روی این مانیفست و زیرمانیفست‌های آن

عدم اعتبارسنجی کد منبع repo

عدم اجرای قلاب پس از همگام‌سازی.
اجرای قلاب پس از همگام‌سازی بدون درخواست تایید.
در صورت شکست قلاب‌های پس از همگام‌سازی عملیات متوقف نشود.

برای مشاهده راهنمای تفصیلی دستور `repo help sync` را اجرا کنید.

دستور '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