| git-annex-filter-branch(1) | General Commands Manual | git-annex-filter-branch(1) |
نام (NAME)
git-annex-filter-branch - بازنویسی شاخه برای استفاده از ارجاعات گیت-ضمیمه
خلاصه دستور (SYNOPSIS)
git annex filter-branch [...]
توضیحات (DESCRIPTION)
این دستور اطلاعات انتخابشده را از شاخه git-annex در یک شیء کامیت گیت کپی کرده و هش (hash) آن را در خروجی چاپ میکند. این کامیت گیت میتواند به یک مخزن گیت دیگر منتقل شده و نام شاخهای مانند "foo/git-annex" به آن اختصاص یابد؛ سپس git-annex در آنجا بهطور خودکار آن را در شاخه git-annex خود ادغام (merge) خواهد کرد. این قابلیت امکان انتشار بخشی از اطلاعات شاخه git-annex شما را بدون نیاز به انتشار تمام آن فراهم میسازد.
روشهای دیگر برای جلوگیری از انتشار اطلاعات از شاخه git-annex یا حذف اطلاعات از آن شامل git-annex-forget(1)، پیکربندی گیت annex.private و گزینه --private در git-annex-initremote(1) میباشند. استفاده از آن روشها بسیار سادهتر است، اما این دستور کنترل کاملی را برای کسانی که به آن نیاز دارند فراهم میآورد.
بدون تعیین هیچ گزینهای، هیچ اطلاعاتی از شاخه git-annex گنجانده نخواهد شد. از گزینهها برای مشخص کردن موارد مورد نظر استفاده کنید. تمام گزینهها را میتوان چندین بار مشخص کرد.
هنگامی که مخزن حاوی اطلاعاتی درباره یک مخزن خصوصی باشد (به دلیل تنظیم بودن annex.private یا استفاده از git-annex initremote --private)، آن اطلاعات خصوصی در صورت مجاز بودن توسط گزینهها گنجانده خواهند شد، حتی اگر در شاخه git-annex ثبت نشده باشند.
هنگامی که یک مخزن با git annex initremote --sameas=foo ایجاد شده باشد، اطلاعات آن زمانی گنجانده میشود که اطلاعات foo گنجانده شود، و زمانی که foo مستثنی شود، اطلاعات آن نیز مستثنی خواهد شد.
هنگامی که یک ریموت خاص با importtree=yes یا exporttree=yes پیکربندی شده باشد، بهطور معمول درخت گیت متناظر با مخزن در شاخه git-annex گنجانده میشود تا اطمینان حاصل شود که توسط git gc جمعآوری زباله (garbage collect) نمیشود. این درختها هنگام فیلتر کردن شاخه git-annex گنجانده *نمیشوند*. معمولاً این مسئله مشکلی ایجاد نمیکند، اما اگر چنین درختی جمعآوری زباله شود، دسترسی به فایلهای موجود در آن ریموت خاص را تا زمان درونریزی یا برونریزی بعدی درخت به آن، غیرممکن خواهد ساخت.
گزینهها (OPTIONS)
- path
- شامل کردن اطلاعات مربوط به تمام کلیدهای فایلهای ضمیمهشده در مسیر مشخصشده.
- گزینههای تطبیق فایل (file matching options)
- میتوان از git-annex-matching-options(1) برای مشخص کردن اینکه کدام فایلها در یک مسیر گنجانده شوند استفاده کرد.
- --branch=ref
- شامل کردن اطلاعات مربوط به کلیدهای ارجاعشده فایلهای ضمیمهشده در شاخه یا شیء درختمانند (treeish).
- --key=key
- شامل کردن اطلاعات مربوط به یک کلید مشخص.
- --all
- شامل کردن اطلاعات مربوط به تمام کلیدها.
- --include-key-information-for=repo
- هنگام گنجاندن اطلاعات درباره یک کلید، اطلاعات مختص این مخزن نیز گنجانده شود. مخزن را میتوان با یک uuid یا نام یک ریموت مشخص کرد. از این گزینه میتوان چندین بار برای گنجاندن چندین مخزن استفاده کرد.
- --include-all-key-information
- شامل کردن اطلاعات کلید برای تمام مخازن، به استثنای مواردی که با گزینه --exclude-key-information-for مستثنی شدهاند.
- --exclude-key-information-for=repo
- هنگام گنجاندن اطلاعات درباره یک کلید، اطلاعات مختص این مخزن مستثنی شود. مخزن را میتوان با یک uuid یا نام یک ریموت مشخص کرد. از این گزینه میتوان چندین بار برای مستثنی کردن چندین مخزن استفاده کرد.
- --include-repo-config-for=repo
- شامل کردن پیکربندی مختص این مخزن. مخزن را میتوان با یک uuid یا نام یک ریموت مشخص کرد.
- این شامل پیکربندی ریموتهای خاص (special remotes) میشود که ممکن است شامل اطلاعات اعتبارسنجی (credentials) تعبیهشده یا پارامترهای رمزنگاری باشند. همچنین شامل تنظیمات اعتماد (trust settings)، محتوای ترجیحی (preferred content) و غیره است. این گزینه شامل اطلاعات کلیدهای git-annex نمیشود. از این گزینه میتوان چندین بار برای گنجاندن چندین مخزن استفاده کرد.
- --include-all-repo-config
- شامل کردن پیکربندی تمام مخازن، به استثنای مواردی که با گزینه --exclude-repo-config-for مستثنی شدهاند.
- --exclude-repo-config-for=repo
- مستثنی کردن پیکربندی مختص این مخزن. مخزن را میتوان با یک uuid یا نام یک ریموت مشخص کرد. از این گزینه میتوان چندین بار برای مستثنی کردن چندین مخزن استفاده کرد.
- --include-global-config
- شامل کردن پیکربندی عمومی که مختص مخزن خاصی نیست.
- این شامل پیکربندیهای ذخیرهشده توسط git-annex-numcopies(1)، git-annex-config(1) و غیره میباشد.
مثالها (EXAMPLES)
شما یک مخزن بزرگ git-annex دارید و میخواهید دایرکتوری "foo" را از آن جدا کنید تا یک مخزن کوچکتر بسازید. تمایل دارید شاخه git-annex در مخزن کوچکتر حاوی تمام اطلاعات مربوط به ریموتها و سایر پیکربندیها باشد، اما فقط اطلاعات کلیدهای موجود در آن دایرکتوری را در بر بگیرد:
git-annex filter-branch foo --include-all-key-information \ --include-all-repo-config --include-global-config
این دستور فقط اطلاعات کلیدهایی را شامل میشود که در حال حاضر در دایرکتوری "foo" قرار دارند، نه کلیدهایی که در نسخههای قدیمیتر فایلها استفاده شدهاند. برای گنجاندن اطلاعات نسخه زیردایرکتوری در تگ "1.0"، گزینه --branch=1.0:foo را اضافه کنید.
مخزن شما دارای یک ریموت خاص با نام "bar" است و میخواهید اطلاعات مربوط به اینکه کدام فایلهای ضمیمهشده در آن ذخیره شدهاند را به اشتراک بگذارید، اما بدون آنکه هیچگونه اطلاعاتی درباره پیکربندی آن ریموت به اشتراک گذاشته شود:
git-annex filter-branch --all --include-all-key-information \ --include-all-repo-config --exclude-repo-config-for=bar \ --include-global-config
همچنین ببینید (SEE ALSO)
نویسنده (AUTHOR)
Joey Hess <id@joeyh.name>