انتشار سیستم کنترل منبع توزیع شده Git 2.38 اعلام شد. Git یکی از محبوبترین، قابل اعتمادترین و با کاراییترین سیستمهای کنترل نسخه است که ابزار توسعه غیرخطی انعطافپذیر مبتنی بر شاخهبندی و ادغام را ارائه میکند. برای اطمینان از یکپارچگی تاریخچه و مقاومت در برابر تغییرات ماسبق، از هش ضمنی کل تاریخچه قبلی در هر commit استفاده میشود؛ همچنین میتوان تگها و تعهدات فردی را با امضای دیجیتالی توسعهدهندگان تأیید کرد.
در مقایسه با نسخه قبلی، نسخه جدید شامل 699 تغییر بود که با مشارکت 92 توسعه دهنده تهیه شد که 24 نفر از آنها برای اولین بار در توسعه شرکت کردند. نوآوری های اصلی:
- ساختار اصلی شامل ابزار "اسکالر" است که توسط مایکروسافت برای مدیریت مخازن بزرگ توسعه یافته است. این ابزار در ابتدا به زبان سی شارپ نوشته شده بود، اما git شامل یک نسخه اصلاح شده به زبان C است. ابزار جدید با فعال کردن ویژگیها و تنظیمات اضافی که عملکرد را هنگام کار با مخازن بسیار بزرگ تحت تأثیر قرار میدهند، با دستور git متفاوت است. به عنوان مثال، هنگام استفاده از اسکالر اعمال می شود:
- شبیه سازی جزئی برای کار با یک کپی ناقص از مخزن.
- مکانیزم داخلی برای ردیابی تغییرات در سیستم فایل (FSMonitor) که به شما امکان می دهد بدون جستجو در کل فهرست کار انجام دهید.
- نمایه هایی که اشیاء را در فایل های بسته مختلف پوشش می دهند (چند بسته).
- فایل های commit-graph با شاخص commit graph که برای بهینه سازی دسترسی به اطلاعات commit استفاده می شود.
- کار دورهای پسزمینه برای حفظ ساختار بهینه مخزن در پسزمینه، بدون مسدود کردن جلسه تعاملی (کار برای بارگیری فعال اشیاء تازه از مخزن راه دور و بهروزرسانی فایل با نمودار commit و فرآیند بستهبندی یک بار در ساعت انجام میشود. مخزن هر شب شروع می شود).
- حالت "sparseCheckoutCone" که الگوهای مجاز را در طول شبیه سازی جزئی محدود می کند.
- یک گزینه --update-refs را به دستور "git rebase" اضافه کرد تا شاخههای وابسته را که با شاخههای در حال جابجایی همپوشانی دارند، بهروزرسانی کند، بهجای اینکه مجبور باشید هر شاخه وابسته را بهصورت دستی بررسی کنید تا به commit مورد نیاز بروید.
- دستور "git rm" را با نمایه های جزئی سازگار کرد.
- رفتار دستور "git mv AB" را هنگام انتقال یک فایل از فضای کاری با نمایه های جزئی در حالت "مخروط" به یک محدوده خارجی که این حالت را ندارد، بهبود بخشید.
- فرمت فایل بیت مپ برای کار با مخازن بزرگ بهینه شده است - یک جدول فهرست اختیاری با لیستی از commit های انتخاب شده و آفست آنها اضافه شده است.
- دستور git merge-tree حالت جدیدی را پیاده سازی می کند که در آن بر اساس دو commit مشخص شده، درختی با نتیجه ادغام محاسبه می شود، گویی که تاریخچه های این commit ها ادغام شده اند.
- تنظیمات "safe.barerepository" برای کنترل توانایی میزبانی مخازن خالی (مخزن هایی که دارای درخت کاری نیستند) در داخل سایر مخازن git اضافه شده است. وقتی روی "explicit" تنظیم شود، کار با مخازن خالی که فقط در فهرست اصلی قرار دارند امکان پذیر خواهد بود. برای اینکه بتوانید مخازن خالی را در زیر شاخه ها قرار دهید، از مقدار "all" استفاده کنید.
- دستور "git grep" گزینه "-m" ("-max-count") را اضافه کرده است که مشابه گزینه ای به همین نام در grep گنو است و به شما امکان می دهد تعداد موارد نمایش داده شده را محدود کنید.
- دستور "ls-files" گزینه "--format" را برای پیکربندی فیلدهای خروجی پیاده سازی می کند (به عنوان مثال، می توانید خروجی نام شی، حالت ها و غیره را فعال کنید).
- در "git cat-file"، هنگام نمایش محتویات اشیاء، می توان پیوندهای نویسنده-ایمیل مشخص شده در فایل نقشه پستی را در نظر گرفت.
منبع: opennet.ru