| git-annex-import(1) | General Commands Manual | git-annex-import(1) |
نام (NAME)
git-annex-import - وارد کردن فایلها از یک مخزن ویژه دوردست
خلاصه دستور (SYNOPSIS)
git annex import --from remote branch[:subdir] | [path ...]
توضیحات (DESCRIPTION)
این دستور روشی برای وارد کردن یک درخت از فایلها از مکانی دیگر به مخزن git-annex شما است. این دستور میتواند فایلها را از یک مخزن ویژه دوردست git-annex یا از یک دایرکتوری وارد کند.
وارد کردن از یک مخزن ویژه دوردست (IMPORTING FROM A SPECIAL REMOTE)
وارد کردن از یک مخزن ویژه دوردست، ابتدا تمام محتوای جدید را از آن دانلود کرده یا درهمسازی (هش) میکند، و سپس یک کامیت git میسازد که بازتابدهنده فایلهای تغییریافته در مخزن ویژه دوردست از زمان آخرین بررسی git-annex است. ادغام (merge) آن کامیت در مخزن شما، آن را بهروزرسانی میکند تا تغییرات اعمالشده در مخزن ویژه دوردست را منعکس کند.
به این ترتیب، یک برنامه یا سرویس میتواند از مخزن ویژه دوردست برای ذخیرهسازی، افزودن، تغییر و حذف فایلها استفاده کند و شما میتوانید آن تغییرات را با استفاده از git-annex ردیابی کنید.
میتوانید استفاده از git annex import برای واکشی تغییرات از یک مخزن ویژه دوردست را با git annex export برای ارسال تغییرات محلی خود به مخزن ویژه دوردست ترکیب کنید.
تنها میتوانید از مخازن ویژه دوردستی فایل وارد کنید که هنگام راهاندازی با git-annex-initremote(1) با گزینه importtree=yes پیکربندی شده باشند. تنها برخی از انواع مخازن ویژه دوردست اجازه این نوع پیکربندی را میدهند؛ فهرستی احتمالاً غیرجامع شامل مخازن ویژه directory، s3 و adb است.
برای وارد کردن از یک مخزن ویژه دوردست، باید نام یک شاخه را مشخص کنید. یک شاخه ردیابی دوردست (remote tracking branch) متناظر توسط git annex import بهروزرسانی خواهد شد. پس از آن، وضعیت مشابه زمانی است که یک git fetch را از یک ریموت معمولی git اجرا کرده باشید؛ میتوانید تغییرات را در شاخه جاری که تحویل گرفتهاید (checked out) ادغام کنید.
برای مثال:
git annex import master --from myremote git annex merge --allow-unrelated-histories myremote/master
میتوانید برای مرحله دوم به همان اندازه از git merge --allow-unrelated-histories myremote/master استفاده کنید، اما استفاده از git-annex merge از چند مشکل غیرمنتظره جلوگیری میکند. هنگام استفاده از شاخههای تنظیمشده (adjusted branches)، شاخه را پیش از ادغام کردن از آن تنظیم میکند.
گزینه --allow-unrelated-histories دستکم برای نخستین ادغامِ شاخه ردیابی دوردست واردشده لازم است، زیرا تاریخچه شاخه متصل نیست. این را مانند این در نظر بگیرید که ریموت یک مخزن جداگانه git با فایلهای اختصاصی خود است. اگر ابتدا فایلها را با git annex export به یک ریموت صادر کنید و سپس با git annex import از آن وارد کنید، نیازی به این گزینه نخواهید داشت.
میتوانید با استفاده از نحو "branch:subdir" فایلها را در یک زیردایرکتوری وارد کنید. برای مثال، اگر "camera" یک مخزن ویژه دوردست باشد که به یک دوربین دسترسی دارد، و بخواهید آن فایلها را به جای ریشه مخزن، در دایرکتوری photos وارد کنید:
git annex import master:photos --from camera git merge camera/master
دستور git annex sync --content (و دستیار git-annex) نیز میتواند برای وارد کردن از یک مخزن ویژه دوردست استفاده شود. برای انجام این کار، باید "remote.<name>.annex-tracking-branch" را پیکربندی کنید تا مشخص شود چه شاخهای باید ردیابی شود. برای مثال:
git config remote.myremote.annex-tracking-branch master git annex sync --content
هر فایلی که در gitignore نادیده گرفته شده باشد در وارد کردن گنجانده نخواهد شد، اما روی ریموت باقی میماند.
هنگامی که برای مخزن ویژه دوردست عبارت محتوای ترجیحی توسط git-annex-wanted(1) تنظیم شده باشد، از آن برای انتخاب فایلهایی که باید وارد شوند استفاده میشود. فایلهایی که جزو محتوای ترجیحی ریموت نیستند از آن وارد نخواهند شد، بلکه روی ریموت باقی خواهند ماند.
بنابراین برای مثال، یک عبارت محتوای ترجیحی مانند "include=*.jpeg or largerthan=100mb" باعث میشود تنها فایلهای jpeg و فایلهای بزرگ وارد شوند.
بخشهایی از عبارت محتوای ترجیحی که به کلید مرتبط هستند، مانند "copies="، هنگام وارد کردن نادیده گرفته میشوند، زیرا کلید پیش از وارد کردن مشخص نیست.
مواردی مانند "include=" در عبارت، نسبت به بالاترین سطح درخت فایلها در ریموت مطابقت داده میشوند، حتی هنگام وارد کردن به یک زیردایرکتوری.
گزینههای وارد کردن از یک مخزن ویژه دوردست (OPTIONS FOR IMPORTING FROM A SPECIAL REMOTE)
- --content, --no-content
- کنترل میکند که آیا محتوای ضمیمهشده از مخزن ویژه دوردست دانلود شود یا خیر.
- حالت پیشفرض، دانلود محتوا به مخزن git-annex است.
- با --no-content، کلیدهای git-annex بر اساس اطلاعات ارائهشده توسط مخزن ویژه دوردست بدون دانلود آن تولید میشوند. دستوراتی مانند git-annex get بعداً میتوانند در صورت تمایل برای دانلود فایلها استفاده شوند. گزینه --no-content توسط تمام مخازن ویژه دوردست پشتیبانی نمیشود.
- --message=msg -m msg
- از این گزینه برای مشخص کردن پیام کامیت برای تغییراتی که از زمان آخرین وارد کردن در مخزن ویژه دوردست ایجاد شده است استفاده کنید.
- اگر چندین گزینه -m مشخص شود، مقادیر آنها به عنوان پاراگرافهای جداگانه به هم متصل میشوند.
وارد کردن از یک دایرکتوری (IMPORTING FROM A DIRECTORY)
هنگامی که این دستور با یک مسیر اجرا شود، git annex import فایلها را از مکانی خارج از نسخه کاری git **منتقل** میکند و آنها را به ضمیمه میافزاید. بر خلاف وارد کردن از یک مخزن ویژه دوردست از نوع دایرکتوری، فایلهای واردشده **از مسیر دادهشده حذف میشوند**.
این یک رابط قدیمی است. این رابط همچنان پشتیبانی میشود، اما لطفاً تغییر به وارد کردن از یک مخزن ویژه دوردست دایرکتوری را با استفاده از رابط مستندشده در بالا مد نظر قرار دهید.
فایلهای مجزا برای وارد کردن میتوانند مشخص شوند. اگر یک دایرکتوری مشخص شود، کل دایرکتوری وارد میشود. لطفاً توجه داشته باشید که دستور زیر **تمام فایلها را از دایرکتوری مبدأ حذف خواهد کرد**.
git annex import /media/camera/DCIM/*
هنگام وارد کردن فایلها، این احتمال وجود دارد که نسخهای تکراری از فایلی وارد شود که از قبل برای git-annex شناخته شده است -- محتوای آن یا از قبل در مخزن محلی وجود دارد، یا git-annex از مخزن دیگری که حاوی آن است مطلع است، یا پیشتر در ضمیمه وجود داشته اما اکنون حذف شده است.
بهطور پیشفرض، وارد کردن یک فایل تکراری شناختهشده منجر به افزودن نام فایل جدیدی به مخزن میشود، بنابراین فایل تکراری دو بار در مخزن حضور خواهد داشت. (با تمام backendهای مبتنی بر چکسام، از جمله SHA256E پیشفرض، تنها یک نسخه از داده ذخیره خواهد شد.)
چندین گزینه میتوانند برای تنظیم نحوه مدیریت فایلهای تکراری استفاده شوند؛ مستندات --duplicate، --deduplicate، --skip-duplicates، --clean-duplicates و --reinject-duplicates را در زیر ببینید.
پیوندهای نمادین (symbolic links) درون دایرکتوری در حال واردسازی نادیده گرفته میشوند تا از وارد کردن تصادفی مواردی خارج از دایرکتوری که import روی آن اجرا شده است جلوگیری شود. با این حال، خود دایرکتوری که import روی آن اجرا میشود میتواند یک پیوند نمادین باشد و آن پیوند نمادین دنبال خواهد شد.
گزینههای وارد کردن از یک دایرکتوری (OPTIONS FOR IMPORTING FROM A DIRECTORY)
- --duplicate
- فایلها را از مکان واردسازی حذف نمیکند.
- اجرای مکرر با این گزینه میتواند همان فایلها را به مخازن، شاخهها یا مکانهای مختلفی در یک مخزن git وارد کند.
- --deduplicate
- فقط فایلهایی را که تکراری نیستند وارد میکند؛ فایلهای تکراری از مکان واردسازی حذف خواهند شد.
- --skip-duplicates
- فقط فایلهایی را که تکراری نیستند وارد میکند. از حذف هرگونه فایل از مکان واردسازی جلوگیری میکند.
- --clean-duplicates
- هیچ فایلی را وارد نمیکند، اما هر فایلی که در مکان واردسازی یافت شود و تکراری باشد حذف میشود.
- --reinject-duplicates
- فایلهایی را که تکراری نیستند وارد میکند. فایلهایی که تکراری هستند، محتوای آنها مجدداً به ضمیمه تزریق میشود (مشابه git-annex-reinject(1)).
- --force
- اجازه میدهد فایلهای موجود توسط فایلهای تازهواردشده بازنویسی شوند.
- همچنین باعث میشود هنگام افزودن فایلها، فایل .gitignore اعمال نشود.
- گزینههای تطبیق فایل (file matching options)
- بسیاری از گزینههای git-annex-matching-options(1) میتوانند برای مشخص کردن فایلهای واردشونده استفاده شوند.
-
git annex import /dir --include='*.png'
گزینههای عمومی (COMMON OPTIONS)
- --jobs=N -JN
- فایلها را بهصورت موازی وارد میکند. این کار ممکن است سریعتر باشد. برای مثال: -J4
- تنظیم این مقدار به "cpus" به ازای هر هسته پردازنده یک کار اجرا خواهد کرد.
- --backend
- مشخص میکند که از کدام backend کلید-مقدار برای فایلهای واردشده استفاده شود.
- --no-check-gitignore
- فایلهای نادیدهگرفتهشده در gitignore را اضافه میکند.
- --json
- خروجی JSON را فعال میکند. این قابلیت برای پردازش توسط برنامههایی که از git-annex استفاده میکنند در نظر گرفته شده است. هر خط از خروجی یک شیء JSON است.
- --json-progress
- اشیاء پیشرفت را در خروجی JSON میگنجاند.
- --json-error-messages
- پیامهایی که معمولاً در خروجی خطای استاندارد نمایش داده میشدند، در عوض در داخل JSON گنجانده میشوند.
- همچنین میتوان از گزینههای git-annex-common-options(1) نیز استفاده کرد.
نکات و هشدارها (CAVEATS)
توجه داشته باشید که استفاده از --deduplicate یا --clean-duplicates با backend از نوع WORM، محتوای فایل را بررسی نمیکند، بلکه نام فایل و mtime را در نظر میگیرد.
اگر annex.largefiles پیکربندی شده باشد و با فایلی مطابقت نداشته باشد، git annex import فایل غیربزرگ (non-large) را به جای ضمیمه، مستقیماً به مخزن git اضافه خواهد کرد.
همچنین ببینید (SEE ALSO)
نویسنده (AUTHOR)
Joey Hess <id@joeyh.name>