git-annex-smudge(1) General Commands Manual git-annex-smudge(1)

git-annex-smudge - درایور فیلتر گیت برای git-annex

git annex smudge [--clean] file

git annex smudge --update

این دستور امکان استفاده از git-annex را به عنوان یک درایور فیلتر گیت فراهم می‌کند که اجازه می‌دهد فایل‌های ضمیمه‌شده در مخزن گیت به جای پیوندهای نمادین، در حالت قفل‌گشایی‌شده باشند و همچنین دستور git add فایل‌ها را در ضمیمه ذخیره نماید.

هنگام افزودن یک فایل با git add، پیکربندی annex.largefiles بررسی می‌شود تا تصمیم‌گیری شود آیا فایل مورد نظر باید به همان شکلی که هست به گیت افزوده شود یا محتوای آن به اندازه کافی بزرگ است که نیاز به استفاده از git-annex داشته باشد. تنظیمات annex.gitaddtoannex بر این مورد اولویت دارد؛ تنظیم آن روی false مانع از اضافه شدن فایل‌ها به ضمیمه توسط git add می‌شود.

با این حال، اگر git-annex تشخیص دهد فایلی قبلاً به ضمیمه افزوده شده بوده است، حتی اگر آن تنظیمات در حالت معمول مانع شوند، فایل همچنان به ضمیمه اضافه خواهد شد. دو نمونه از این موارد عبارتند از افزودن نسخه تغییریافته یک فایل ضمیمه‌شده، و انتقال یک فایل ضمیمه‌شده به نام فایلی جدید و سپس افزودن آن.

پیکربندی گیت برای استفاده از این دستور به عنوان یک درایور فیلتر به شرح زیر است. این پیکربندی معمولاً توسط git-annex init انجام می‌شود، بنابراین نیازی به پیکربندی دستی آن ندارید.

[filter "annex"]
        smudge = git-annex smudge %f
        clean = git-annex smudge --clean %f

برای اینکه گیت از این درایور فیلتر استفاده کند، لازم است در فایل .gitattributes یا در .git/info/attributes پیکربندی شود. دومی معمولاً هنگام مقداردهی اولیه یک مخزن با محتوای زیر تنظیم می‌شود:

* filter=annex

فیلتر smudge محتوای فایل‌های ضمیمه‌شده را به گیت ارائه نمی‌دهد، زیرا این کار بسیار کُند بوده و باعث نشت حافظه در گیت می‌شود. در عوض، مشخص می‌کند که کدام فایل‌های درخت کاری (worktree) باید به‌روزرسانی شوند و سپس دستور git annex smudge --update درخت کاری را به‌روز می‌کند تا حاوی محتوا شود. این عمل توسط چندین قلاب گیت از جمله post-checkout و post-merge اجرا می‌شود. با این حال، چند دستور گیت به‌ویژه git stash و git cherry-pick هیچ قلابی را اجرا نمی‌کنند؛ بنابراین پس از استفاده از این دستورات می‌توانید به‌صورت دستی git annex smudge --update را جهت به‌روزرسانی درخت کاری اجرا کنید.

همچنین می‌توان از گزینه‌های git-annex-common-options(1) نیز استفاده کرد.

git-annex(1)

git-annex-filter-process(1)

Joey Hess <id@joeyh.name>