| git-remote-annex(1) | General Commands Manual | git-remote-annex(1) |
نام (NAME)
git-remote-annex - برنامه کمکی ریموت برای ذخیره یک مخزن گیت در ریموت ویژه git-annex
خلاصه دستور (SYNOPSIS)
git fetch annex::uuid?param=value¶m=value...
توضیحات (DESCRIPTION)
این یک برنامه کمکی ریموت گیت است که به گیت امکان میدهد از یک مخزن گیت که در یک ریموت ویژه git-annex با یک URL آغازشونده با "annex::" ذخیره شده است، عملیاتهای کلون، pull و push را انجام دهد.
ریموت ویژه برای استفاده از این قابلیت باید دارای یک remote.<name>.url پیکربندیشده باشد. این تنظیم بهطور خودکار هنگام کلون کردن گیت از یک ریموت ویژه ایجاد میشود.
برای اینکه git-annex-initremote(1) و git-annex-enableremote(1) این آدرس URL را پیکربندی کنند، گزینه --with-url را به آنها ارسال کنید.
یا برای پیکربندی یک ریموت ویژه موجود با یک URL کوتاه، دستور زیر را اجرا کنید:
git config remote.name.url annex::
پس از پیکربندی URL، میتوانید درست مانند هر ریموت گیت دیگری، از git pull، git push و غیره با این ریموت ویژه استفاده کنید. اما برای برخی شرایط که رفتار آن کمی متفاوت است، بخش "تداخل در ارسالها" در زیر را ببینید.
قالب URL (URL FORMAT)
این برنامه از یک URL استفاده میکند که با "annex::" شروع میشود. سه شکل برای این گونه نشانیها وجود دارد:
- نشانی کامل (Complete URL)
- شامل UUID و تمامی پارامترهای پیکربندی ریموت ویژه است که هنگام استفاده از git-annex initremote ارسال شدهاند.
- برای نمونه، جهت کلون کردن از یک ریموت ویژه دایرکتوری:
- git clone annex::358ff77e-0bc3-11ef-bc49-872e6695c0e3?type=directory&encryption=none&directory=/mnt/foo/
- نشانی کوتاه (Shorthand URL)
- این حالت پیکربندی یک ریموت ویژه موجود را با یک URL بدون نیاز به نوشتن نشانی کامل آسان میکند.
- annex::
- هنگام استفاده از این نشانی کوتاه، در صورت امکان تشخیص توسط git-annex، نشانی کامل در هر بار git pull یا push نمایش داده خواهد شد. (اگرچه در برخی موارد، مانند ریموت ویژه دایرکتوری، ممکن است برخی پارامترها از نشانی نمایشدادهشده حذف شوند.)
- نشانی وب (Web URL)
- این URL به فایلی در وب اشاره دارد که حاوی نشانی کامل annex:: است.
- annex::https://example.com/foo-repo
- به دلایل امنیتی، دسترسی به همه ریموتهای ویژه با چنین نشانیای امکانپذیر نیست. در حال حاضر، این قابلیت به ریموتهای ویژه httpalso محدود شده است.
تداخل در ارسالها (CONFLICTING PUSHES)
مانند هر مخزن گیت، یک مخزن گیت ذخیرهشده در یک ریموت ویژه نیز میتواند از مکانهای مختلف موارد متناقضی را از طریق push دریافت کند. این فرآیند عمدتاً مانند هر مخزن گیت دیگری کار میکند؛ به عنوان مثال از ارسالی که کار دیگران را بازنویسی کند جلوگیری میشود، مگر اینکه به صورت اجباری (force) انجام شود.
با این حال، زمانی که ارسالهای متناقض بهطور همزمان انجام میشوند، ممکن است یکی از ارسالها توسط دیگری بازنویسی شود. در این وضعیت، ارسالِ بازنویسیشده ممکن است موفقیتآمیز به نظر برسد، اما اجرای pull در ادامه، وضعیت واقعی را نشان خواهد داد.
قالب مخزن (REPOSITORY FORMAT)
مخزن گیت در ریموت ویژه با استفاده از اشیاء خاص annex با نامهایی که با "GITMANIFEST" و "GITBUNDLE" شروع میشوند ذخیره میگردد. برای جزئیات، ببینید: https://git-annex.branchable.com/internals/git-remote-annex
ارسالها به یک ریموت ویژه معمولاً به صورت افزایشی انجام میشوند. با این حال، گاهی اوقات کل مخزن گیت مجدداً بارگذاری میشود. این کار زمانی انجام میشود که یک ref به صورت اجباری ارسال شود، یا یک ref از ریموت حذف گردد. همچنین هنگامی که بستههای گیت زیادی در ریموت ویژه انباشته شوند (بر اساس آنچه در پیکربندی گیت remote.<name>.annex-max-git-bundles تنظیم شده است)، بارگذاری مجدد انجام میشود.
توجه داشته باشید که بارگذاری مجدد مخزن، اشیاء قدیمی GITBUNDLE را حذف نمیکند. این بدان معناست که refهای ارسالشده به ریموت ویژه حتی پس از حذف یا بازنویسی نیز همچنان قابل دسترسی هستند.
ارسالی که تمام refها را از ریموت ویژه حذف کند، همه اشیاء انباشتهشده GITBUNDLE را نیز حذف خواهد کرد. اما مسلماً انجام چنین ارسالی به این معنی است که هر کس در آن زمان از ریموت ویژه کلون بگیرد، یک ریموت خالی را مشاهده خواهد کرد.
همچنین ببینید (SEE ALSO)
gitremote-helpers(1)
git-annex(1)
git-annex-initremote(1)
نویسنده (AUTHOR)
Joey Hess <id@joeyh.name>