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

git-annex-adjust - ورود به یک شاخه تنظیم‌شده (adjusted branch)

git annex adjust --unlock|--lock|--fix|--hide-missing [--unlock|--lock|--fix]|--unlock-present

وارد یک حالت تنظیم‌شده از شاخه فعلی می‌شود. با فایل‌های ضمیمه‌شده (annexed) به شکل متفاوتی رفتار خواهد شد. به عنوان مثال با --unlock تمام فایل‌های ضمیمه‌شده از حالت قفل خارج می‌شوند.

شاخه تنظیم‌شده نامی شبیه به "adjusted/master(unlocked)" خواهد داشت. از آنجا که این یک شاخه معمولی گیت است، می‌توانید در هر زمان از git checkout برای بازگشت به شاخه اصلی استفاده کنید.

این قابلیت امکان تغییر نحوه مدیریت فایل‌های ضمیمه‌شده را بدون ایجاد تغییرات در یک شاخه عمومی با دستوراتی مانند git-annex unlock فراهم می‌کند.

هنگامی که در شاخه تنظیم‌شده هستید، می‌توانید مانند معمول از دستورات git-annex و git استفاده کنید. هر کامیتی که ایجاد کنید، در ابتدا تنها در شاخه تنظیم‌شده ثبت خواهد شد.

برای انتقال کامیت‌ها از شاخه تنظیم‌شده به شاخه اصلی و سایر مخازن، و همچنین برای ادغام تغییرات از مخازن دیگر، دستور git annex sync را اجرا کنید. این کار تغییراتی را که ایجاد کرده‌اید، مانند افزودن یا حذف فایل‌ها، منتشر می‌کند، اما تغییرات ساختاری اعمال‌شده توسط این دستور را منتشر نخواهد کرد.

هنگام حضور در یک شاخه تنظیم‌شده، استفاده از git merge otherbranch اغلب مناسب نیست، زیرا ادغام یک شاخه تنظیم‌نشده ممکن است به تداخل‌های غیرضروری ادغام بینجامد، یا فایل‌ها را به شکل تنظیم‌نشده اضافه کند. همچنین چنین ادغام‌هایی نمی‌توانند از شاخه تنظیم‌شده به شاخه اصلی بازگردانده شوند. برای جلوگیری از این مشکلات، از git annex merge otherbranch استفاده کنید.

اجرای مجدد این دستور با همان گزینه‌ها در حالی که درون شاخه تنظیم‌شده هستید، شاخه تنظیم‌شده را در صورت نیاز به‌روزرسانی می‌کند (برای مثال برای --hide-missing و --unlock-present)، و همچنین کامیت‌ها را به شاخه اصلی انتقال می‌دهد.

تمام فایل‌های ضمیمه‌شده در شاخه تنظیم‌شده را از حالت قفل خارج (unlock) می‌کند. این کار امکان ویرایش فایل‌های ضمیمه‌شده را فراهم می‌سازد.
به‌طور معمول، باز کردن قفل یک فایل مستلزم تهیه یک نسخه کپی از محتوای آن است تا محتوای اصلی حفظ شده و نسخه کپی قابل ویرایش باشد. برای مصرف کمتر فضا، می‌توان پیش از اجرای این دستور annex.thin را روی true تنظیم کرد؛ این کار باعث می‌شود به جای کپی کردن، یک پیوند سخت (hard link) به محتوا ایجاد شود (در صورتی که توسط سیستم فایل پشتیبانی شود). اگرچه این کار می‌تواند فضای دیسک قابل توجهی را ذخیره کند، هرگونه ویرایش انجام‌شده روی یک فایل باعث از دست رفتن نسخه قدیمی آن فایل از مخزن محلی خواهد شد. بنابراین، annex.thin را با احتیاط فعال کنید.
هنگام حضور در یک شاخه تنظیم‌شده بازشده (unlocked)، دستور git annex add فایل‌ها را بر خلاف رفتار پیش‌فرض (که به‌صورت قفل‌شده اضافه می‌شوند) به‌صورت قفل‌نشده اضافه خواهد کرد.
تمام فایل‌های ضمیمه‌شده در شاخه تنظیم‌شده را قفل (lock) می‌کند. این حالت ممکن است برای افرادی مناسب باشد که ترجیح می‌دهند در صورت عدم دسترسی به محتوای یک فایل ضمیمه‌شده، پیوندهای نمادین شکسته (broken symlinks) را ببینند.
هنگام حضور در یک شاخه تنظیم‌شده قفل‌شده، دستور git annex add مانند معمول فایل‌ها را به صورت قفل‌شده اضافه می‌کند. با این حال، git add (و git commit -a و غیره) همچنان فایل‌ها را به‌صورت باز اضافه می‌کنند، زیرا برای این دستورات گیت امکان افزودن فایل‌ها به صورت قفل‌شده وجود ندارد.
پیوندهای نمادین به فایل‌های ضمیمه‌شده را اصلاح می‌کند تا به دایرکتوری محلی اشیای git annex اشاره کنند. این گزینه زمانی مفید است که مخزن به روشی غیرمعمول چک‌اوت شده باشد که مانع از اشاره پیوندهای نمادین کامیت‌شده در گیت به اشیای ضمیمه می‌شود.
تنها فایل‌های ضمیمه‌شده‌ای را در شاخه تنظیم‌شده قرار می‌دهد که محتوای آن‌ها موجود باشد.
شاخه تنظیم‌شده با تغییر وضعیت دسترسی به محتوا بلافاصله تغییر نمی‌کند، بنابراین اگر با استفاده از git annex drop فایل‌ها را رها کنید، مانند معمول به پیوندهای شکسته تبدیل می‌شوند. و هنگامی که فایل‌های مفقود از جای دیگری به مخزن کپی می‌شوند، بلافاصله در شاخه قابل مشاهده نخواهند بود.
برای به‌روزرسانی شاخه تنظیم‌شده جهت بازتاب تغییرات در دسترسی به محتوا، مجدداً دستور git annex adjust --hide-missing را اجرا کنید. همچنین برای خودکارسازی به‌روزرسانی‌ها، می‌توانید پیکربندی annex.adjustedbranchrefresh را تنظیم کنید.
علیرغم پنهان بودن فایل‌های ناموجود، دستور git annex sync --content همچنان روی آن‌ها عمل خواهد کرد و می‌توان از آن برای بارگیری فایل‌های مفقود از مخازن دوردست استفاده کرد. این دستور همچنین پس از انتقال محتوا، شاخه تنظیم‌شده را به‌روزرسانی می‌کند.
این گزینه می‌تواند با --unlock، --lock یا --fix ترکیب شود.
فایل‌هایی را که محتوای آن‌ها موجود است از حالت قفل خارج می‌کند و فایل‌هایی را که محتوای آن‌ها ناموجود است قفل نگه می‌دارد. این کار مزایای کار با فایل‌های بازشده را فراهم می‌سازد، اما بررسی عدم مفقود بودن محتوای یک فایل را نیز آسان‌تر می‌کند، زیرا در صورت نبود محتوا به صورت پیوند نمادین شکسته خواهد بود.
شاخه تنظیم‌شده بلافاصله با تغییر دسترسی به محتوا تغییر نمی‌کند، بنابراین هنگامی که فایل‌ها را با git annex get دریافت می‌کنید، قفل باقی می‌مانند. همچنین هنگامی که فایل‌ها را با git annex drop رها می‌کنید، قفل باقی می‌مانند و بنابراین به پیوندهای نمادین شکسته تبدیل نخواهند شد.
برای به‌روزرسانی شاخه تنظیم‌شده جهت بازتاب تغییرات در دسترسی به محتوا، مجدداً دستور git annex adjust --unlock-present را اجرا کنید. همچنین برای خودکارسازی به‌روزرسانی‌ها، پیکربندی annex.adjustedbranchrefresh را تنظیم نمایید، یا از git-annex sync --content استفاده کنید که پس از انتقال محتوا، شاخه را به‌روزرسانی می‌کند.
همچنین می‌توان از گزینه‌های git-annex-common-options(1) نیز استفاده کرد.

git-annex(1)

git-annex-unlock(1)

git-annex-lock(1)

git-annex-upgrade(1)

git-annex-sync(1)

git-annex-view(1)

Joey Hess <id@joeyh.name>