.👀 خبر در یک نگاه:
نسخه ۲.۵۱ گیت منتشر شد. این نسخه شامل بهبودهایی در بستهبندی مولتیپک، روش جدید Path Walk برای بستههای کوچکتر، فرمت تبادل استش و ارتقای دستورات cat-file، switch و restore است. همچنین تغییراتی برای آمادهسازی گیت ۳.۰ و بهبودهای کدبیس معرفی شده است. |
پروژه متنباز Git بهتازگی نسخه ۲.۵۱ را منتشر کرده که شامل قابلیتها و رفع باگهایی از سوی بیش از ۹۱ مشارکتکننده است (۲۱ نفر آنها جدید هستند). گیتهاب به مناسبت این انتشار، در پست اخیر خود نگاهی به جالبترین ویژگیها و تغییرات اضافهشده از نسخه ۲.۵۰ تاکنون انداخته است.
شاخصهای چندپکی بدون اضافهبار
گیت محتوای مخزن را به عنوان آبجکت (blobها، treeها، commitها) به صورت آزاد یا در فایلهای فشرده (packfiles) ذخیره میکند. هر بسته دارای یک فهرست (index) است که هش آبجکتها را به offsetها نگاشت میکند. با افزایش تعداد بستهها، جستجو کندتر میشود.
یک MIDX مانند فهرست بسته عمل میکند که آبجکتها را در چندین فایل فشرده پوشش میدهد و هزینه جستجو را کاهش میدهد. GitHub از MIDX برای ذخیره محتوای مخزن شما پس از تقسیم آن به چندین بسته و برای دسترسی به commitهای مربوط به bitmap استفاده میکند.
با این حال، آبجکتهای غیرقابل دسترسی در «cruft packs» ذخیره میشوند. هدف این بود که cruft packها از MIDX حذف شوند، اما این غیرممکن بود. اگر یک آبجکت که قبلا غیرقابل دسترسی بود در یک cruft pack، بعدا از طریق یک commit دارای bitmap قابل دسترسی شود، اما تنها نسخه آن خارج از MIDX باشد، موقعیت بیتی نخواهد داشت و نوشتن بیتمپِ دسترسی غیرممکن میشود.
گیت 2.51 نحوه بسته بندی قسمت غیر cruft مخزن شما را تغییر میدهد. قبلا، گیت آبجکتهایی را که از قبل در بستههایی که بازبستهبندی نمیشدند (از جمله cruft packها) موجود بودند، نادیده میگرفت. اکنون، گیت 2.51 نسخههای اضافی از آبجکتها (و اجدادشان) را ذخیره میکند اگر تنها نسخه دیگر آنها در یک cruft pack باشد. اجرای مکرر این کار تضمین میکند که مجموعه بسته غیر cruft از نظر دسترسی، بسته یا کامل است.
در نتیجه، گیت 2.51 یک تنظیم جدید به نام repack.MIDXMustContainCruft را شامل میشود که از رفتار بستهبندی جدید برای ذخیره cruft packها خارج از MIDX استفاده میکند. استفاده از این در GitHub به طور قابل توجهی اندازه MIDXها، زمان نوشتن و عملکرد خواندن مخزن را بهبود بخشید. (به عنوان مثال، ۳۸٪ کاهش اندازه، ۳۵٪ سریعتر نوشتن و حدود ۵٪ بهبود عملکرد خواندن در monorepo اصلی ما)
بستههای کوچکتر با Path Walk
گیت 2.49 «name-hash v2» را برای بهبود فشردهسازی دلتا معرفی کرد. این بهبود با هش کردن آبجکتها بر اساس مسیر فایلها برای مرتبسازی بهتر و انتخاب دلتا/بیس انجام میشود. این هش جدید ساختار پوشهها را نیز در نظر میگیرد که منجر به بستههای کوچکتر میشود. گیت ۲.۵۱ این قابلیت را با «پیمایش مسیر» (path walk) ادامه میدهد. پیمایش مسیر یک روش جدید برای بازبستهبندی است که تمام آبجکتها را در یک مسیر مشخص به طور همزمان پردازش میکند و از روشهای ابتکاری name-hash اجتناب میکند. این روش اغلب منجر به بستههای حتی کوچکتر با زمانبندی رقابتی میشود. میتوانید آن را با استفاده از گزینه –path-walk در خط فرمان امتحان کنید.
فرمت تبادل استش (Stash Interchange Format)
گیت ۲.۵۱ همچنین یک نمایش داخلی جدید برای استش (stash) معرفی میکند که در آن چندین ورودی استش به عنوان یک دنباله از کامیتها نمایش داده میشوند. استشها اکنون چهار والد دارند و مانند یک تاریخچه کامیت عادی عمل میکنند. این به شما امکان میدهد استشهای خود را به یک ارجاع واحد صادر کنید، سپس آنها را مانند یک شاخه یا تگ معمولی با استفاده از زیرفرمانهای جدید Git Stash برای وارد کردن و صادر کردن، پوش یا پول کنید. به عنوان مثال، میتوانید محتوای استش را از یک دستگاه پوش کنید و آن را در دستگاه دیگری پول کنید و محتوای استش را بین آنها حفظ کنید.
ویژگیهای دیگر
در اینجا ویژگیهای جدید معرفی شده در گیت نسخه 2.51 آمده است:
- دستور git cat-file بهبود یافته است: این دستور اکنون مدیریت بهتری از زیرماژولها ارائه میدهد و از مشخصات مسیر چند آیتمی در هنگام استفاده با فیلترهای بلوم پشتیبانی میکند. هدف این بهبودها، کارآمدتر کردن اسکریپتنویسی و پیمایش تاریخچه است.
- دستورات git switch و git restore دیگر آزمایشی نیستند: این نشاندهنده پایداری و آمادگی آنها برای استفاده عمومی در گردش کارهاست.
- پشتیبانی از git whatchanged منسوخ شده است: این دستور در نسخه 3.0 گیت که به زودی عرضه میشود، حذف خواهد شدکه نشان میدهد کاربران باید به دستورات جایگزین روی بیاورند.
- پیشفرضهای آینده برای گیت 3.0: مخازن جدید به طور پیشفرض از بکاند reftable و SHA-256 برای هش کردن استفاده خواهند کرد که شیوههای مدرنتر و امنتری را ترویج میدهد.
- بهبودهای کدبیس: کدبیس گیت اکنون اجازه استفاده از کلمه کلیدی bool را میدهد و برای ارسال پچها، نامهای غیرقانونی را مجاز میداند، که شیوههای آن را بیشتر با هسته لینوکس همسو میکند.
سخن نهایی
اینها تنها نمونهای از تغییرات آخرین نسخه هستند. برای جزئیات بیشتر، یادداشتهای انتشار گیت ۲.۵۱ یا هر نسخه قبلی در مخزن گیت را بررسی کنید.
منبع: github.blog
دیدگاهتان را بنویسید