Git 2.37 tarqatilgan manbalarni boshqarish tizimining chiqarilishi e'lon qilindi. Git eng mashhur, ishonchli va yuqori unumli versiyalarni boshqarish tizimlaridan biri bo'lib, tarmoqlanish va birlashtirishga asoslangan moslashuvchan chiziqli bo'lmagan rivojlanish vositalarini taqdim etadi. Tarixning yaxlitligini va retroaktiv o'zgarishlarga chidamliligini ta'minlash uchun har bir topshiriqda butun oldingi tarixning yashirin xeshlanishi qo'llaniladi, shuningdek, ishlab chiquvchilarning raqamli imzolari bilan individual teglar va majburiyatlarni tasdiqlash mumkin.
Oldingi versiya bilan taqqoslaganda, 395 ta ishlab chiquvchi ishtirokida tayyorlangan yangi versiyaga 75 ta o'zgartirish kiritildi, ulardan 20 tasi birinchi marta ishlab chiqishda ishtirok etdi. Asosiy innovatsiyalar:
- Repozitariyning faqat bir qismini qamrab oluvchi qisman indekslar mexanizmi (siyrak indeks) keng foydalanishga tayyor holga keltirildi. Qisman indekslar ish faoliyatini yaxshilashi va qisman klonlash (siyrak tekshirish) operatsiyalarini bajaradigan yoki omborning to'liq bo'lmagan nusxasi bilan ishlaydigan omborlarda bo'sh joyni tejashi mumkin. Yangi nashr qisman indekslarni git show, git sparse-checkout va git stash buyruqlariga integratsiyalashni yakunlaydi. Qisman indekslardan foydalanishning eng sezilarli ishlash foydasi git stash buyrug'i bilan ko'rinadi, bu ba'zi holatlarda bajarish tezligini 80% ga oshirdi.
- Omborda havola etilmagan (filiallar yoki teglar tomonidan havola qilinmagan) erishib bo'lmaydigan ob'ektlarni qadoqlash uchun yangi "kruft paketlari" mexanizmi joriy etildi. Olib bo'lmaydigan ob'ektlar axlat yig'uvchi tomonidan o'chiriladi, ammo poyga sharoitlarini oldini olish uchun o'chirilishidan oldin ma'lum vaqt omborda qoladi. Olib bo'lmaydigan ob'ektlarning paydo bo'lish davrini kuzatish uchun ularga o'xshash ob'ektlarning o'zgarishi vaqti bilan teglarni biriktirish kerak, bu ularni barcha ob'ektlar umumiy o'zgarish vaqtiga ega bo'lgan bitta paket faylida saqlashga imkon bermaydi. Ilgari, har bir ob'ektni alohida faylda saqlash hali o'chirishga yaroqli bo'lmagan ko'plab yangi, erishib bo'lmaydigan ob'ektlar mavjud bo'lganda muammolarga olib keldi. Taklif etilayotgan “Cruft packs” mexanizmi barcha erishib bo'lmaydigan ob'ektlarni bitta to'plam faylida saqlash va har bir ob'ektni o'zgartirish vaqti haqidagi ma'lumotlarni ".mtimes" kengaytmali faylda saqlangan alohida jadvalda aks ettirish imkonini beradi.
- Windows va macOS uchun fayl tizimidagi o'zgarishlarni kuzatish uchun o'rnatilgan mexanizm mavjud bo'lib, bu "git status" kabi operatsiyalarni bajarishda butun ishchi katalog bo'ylab takrorlanishning oldini olishga imkon beradi. Ilgari, o'zgarishlarni kuzatish uchun FSdagi o'zgarishlarni kuzatish uchun tashqi yordam dasturlari, masalan, Watchman ilgaklar orqali ulanishi mumkin edi, ammo bu qo'shimcha dasturlar va konfiguratsiyani o'rnatishni talab qildi. Endi ko'rsatilgan funksiya o'rnatilgan va uni "git config core.fsmonitor true" buyrug'i bilan yoqish mumkin.
- "Git sparse-checkout" buyrug'ida qisman klonlash uchun shablonlarni aniqlash usuli "-konus" rejimiga muqobilni qo'llab-quvvatlash eskirgan deb e'lon qilindi, bu esa omborning tegishli qismini aniqlashga imkon beradi. qisman indekslarni optimallashtirish uchun foydalanishga ruxsat bermaydigan ".gitignore" sintaksisidan foydalangan holda alohida fayllarni ro'yxatga olish uchun klonlash operatsiyasi.
- Diskdagi o'zgarishlarni o'chirish uchun fsync() chaqiruvini sozlashda moslashuvchanlikni oshirish. "Core.fsyncMethod" parametriga "to'plamli" sinxronizatsiya strategiyasini qo'llab-quvvatlash qo'shildi, bu bitta fsync() tomonidan qayta o'rnatiladigan qayta yozish keshidagi o'zgarishlarni to'plash orqali ko'p sonli individual fayllarni yozishda ishni tezlashtirish imkonini beradi. qo'ng'iroq qiling. “git add” buyrug‘i yordamida 500 ta fayl qo‘shilgan test yangi rejim yoqilganda 0.15 soniyada yakunlandi, fsync() ga qo‘ng‘iroq qilish har bir fayl uchun 1.88 soniya, fsync ishlatmasdan esa 0.06 soniya vaqtni oldi.
- “git log” va “git rev-list” kabi tarmoqqa o‘tish buyruqlari endi “-since-as-filter=X” opsiyasiga ega bo‘lib, “X” dan eskiroq bo‘lgan topshiriqlar haqidagi ma’lumotlarni filtrlash imkonini beradi. "— beri" opsiyasidan farqli o'laroq, yangi buyruq belgilangan vaqtdan kattaroq birinchi topshiriqdan keyin qidiruvni to'xtatmaydigan filtr sifatida amalga oshiriladi.
- "Git remote" buyrug'ida "-v" bayrog'ini belgilashda omborning qisman klonlari haqida ma'lumot ko'rsatiladi.
- "Ogohlantirish", "o'lish" va "ruxsat berish" qiymatlarini qabul qilishi mumkin bo'lgan "transfer.credentialsInUrl" sozlamasi qo'shildi. Parametrda ko'rsatilgan bo'lsa "masofadan. .url" ochiq matn hisobga olish ma'lumotlari uchun "olish" yoki "surish" operatsiyasini bajarishga urinish, agar "transfer.credentialsInUrl" sozlamasi "o'lik" ga o'rnatilgan bo'lsa, xatolik yoki "ogohlantirish" ga o'rnatilgan bo'lsa, ogohlantirish bilan muvaffaqiyatsiz bo'ladi.
- Odatiy bo'lib, Perl dan C ga qayta yozilgan "git add -i" buyrug'ining interaktiv rejimining yangi ilovasi yoqilgan.
Manba: opennet.ru
