Git 2.31 taqsimlangan manba boshqaruv tizimining chiqarilishi

Tarqalgan manbalarni boshqarish tizimi Git 2.31 endi mavjud. 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, yangi versiya 679 ta o'zgartirishni o'z ichiga oladi, ular 85 ta ishlab chiquvchi ishtirokida tayyorlangan, ulardan 23 tasi birinchi marta ishlab chiqishda ishtirok etgan. Asosiy innovatsiyalar:

  • Cron-ni qo'llab-quvvatlamaydigan tizimlarda davriy ishlarni bajarishga imkon beradigan "git care" buyrug'i qo'shildi. Masalan, yangi buyruq yordamida siz omborni qadoqlash jarayonini vaqti-vaqti bilan ishga tushirishni tashkil qilishingiz mumkin, shunda siz turli xil buyruqlar bajarilganda qadoqlash avtomatik ravishda amalga oshirilganda ombor bloklanishini kutishingiz shart emas. "Git care" buyrug'i interaktiv seansni bloklamasdan, fonda omborning optimal tuzilishini saqlab qolish uchun optimallashtirish va operatsiyalarni bajarishga imkon beradi - soatiga bir marta masofaviy ombordan yangi ob'ektlarni proaktiv ravishda yuklab olish va yangilash bo'yicha ishlar amalga oshiriladi. topshiriq grafigi bilan fayl va omborni qadoqlash jarayoni har kecha boshlanadi.
  • Paketli fayllar uchun diskda teskari indeksni (revindex) saqlash uchun qo'shimcha yordam. Eslatib o'tamiz, Git barcha ma'lumotlarni alohida fayllarda joylashgan ob'ektlar ko'rinishida saqlaydi. Repozitariy bilan ishlash samaradorligini oshirish uchun ob'ektlar qo'shimcha ravishda paketli fayllarga joylashtiriladi, ularda ma'lumotlar bir-biridan keyingi ob'ektlar oqimi ko'rinishida taqdim etiladi (shunga o'xshash format git fetch va git push yordamida ob'ektlarni uzatishda qo'llaniladi. buyruqlar). Har bir to'plam fayli uchun indeks fayli (.idx) yaratiladi, bu ob'ekt identifikatori yordamida berilgan ob'ekt saqlanadigan paket faylidagi ofsetni juda tez aniqlash imkonini beradi. Git 2.31 da kiritilgan teskari indeks (.rev) ob'ektni paket faylida joylashtirish haqidagi ma'lumotlardan ob'ekt identifikatorini aniqlash jarayonini optimallashtirishga qaratilgan.

    Ilgari, bunday konvertatsiya paket faylini tahlil qilish paytida tezda amalga oshirildi va faqat xotirada saqlangan, bu o'xshash indekslarni qayta ishlatishga imkon bermadi va har safar indeksni yaratishga majbur qildi. Indeks yaratish operatsiyasi ob'ekt-pozitsiya juftliklari qatorini yaratish va uni joylashuvi bo'yicha saralashdan iborat bo'lib, bu katta paketli fayllar uchun uzoq vaqt talab qilishi mumkin.

    Masalan, to'g'ridan-to'g'ri indeksdan foydalanadigan ob'ektlar tarkibini ko'rsatish operatsiyasi ob'ektlarning o'lchamini ko'rsatish bo'yicha operatsiyadan 62 baravar tezroq bo'lgan, buning uchun pozitsiyadan ob'ektga ma'lumotlar indekslanmagan. Teskari indeksdan foydalangandan so'ng, bu operatsiyalar taxminan bir xil vaqtni olishni boshladi. Teskari indekslar, shuningdek, diskdan tayyor ma'lumotlarni to'g'ridan-to'g'ri uzatish orqali olish va surish buyruqlarini bajarishda ob'ektlarni yuborish operatsiyalarini tezlashtirishga imkon beradi. Odatiy bo'lib, teskari indekslar yaratilmaydi; ularni yaratish uchun siz "git config pack.writeReverseIndex true" sozlamasini yoqishingiz va keyin "git repack -Ad" buyrug'i bilan omborni to'plashingiz kerak.

  • Commit-grafik fayl formatidagi koʻrinishga asoslangan ishlash optimallashtirishlari qoʻshildi, ular majburiyatlar toʻgʻrisidagi maʼlumotlarga kirishni optimallashtirish uchun foydalanildi, topshiriqlar bilan qoʻshimcha operatsiyalarni tezlashtirish uchun ishlatilishi mumkin boʻlgan majburiyatlarni yaratish raqami haqidagi yangi maʼlumotlar.
  • Yangi omborlarda sukut bo'yicha foydalaniladigan asosiy filial nomini qayta aniqlash imkoniyatlari qo'shildi (init.defaultBranch sozlamalari). Tashqi omborlarga kirishda git HEAD tomonidan ko'rsatilgan filialni tekshirishga harakat qiladi, ya'ni. agar tashqi server sukut bo'yicha "asosiy" filialdan foydalansa, u holda "git clone" operatsiyasi mahalliy "asosiy" ni tekshirishga harakat qiladi. Git 2.31 endi bo'sh omborlarni tekshirishning ushbu turini qo'llab-quvvatlaydi. Masalan, birinchi yamoqlarni qo'shishdan oldin yangi omborni mahalliy klonlashda, mahalliy nusxada endi tashqi serverda o'rnatilgan standart yuqori oqim nomi mavjud bo'ladi.
  • Ob'ektlar hajmi haqida qisqacha ma'lumot berish uchun "git rev-list" buyrug'iga --disk-usage opsiyasi qo'shildi.
  • Birlashma orqa tomoniga bo'lajak o'zgarishlarni kutish uchun nomni o'zgartirishni aniqlash sezilarli darajada optimallashtirildi.
  • Eski PCRE1 oddiy ifoda kutubxonasini qo'llab-quvvatlash to'xtatildi.
  • Xeshlash algoritmidan qat'i nazar, qisqartirilgan havolalardan foydalanishni majburan taqiqlash mumkin. Taqiqlash core.abbrev parametriga “no” qiymatini belgilash orqali yoqiladi.
  • Nisbiy yoki mutlaq yo'llar chiqarilishi kerakligini aniq belgilash uchun "git rev-parse" buyrug'iga "--path-format=(absolute|relative)" opsiyasi qo'shildi.
  • Bash tugatish skriptlari o'zingizning "git" kichik buyruqlaringiz uchun yakunlash qoidalarini qo'shishni osonlashtiradi.
  • Standart kirish oqimidan havolalarni o'qish uchun "git bundle" buyrug'iga --stdin opsiyasi qo'shildi.
  • "git log" buyrug'iga yangi variant qo'shildi: "--diff-merges=" "
  • Ikki nusxadagi chiqishni yo'q qilish uchun "git ls-files" buyrug'iga "--deduplicatecan" opsiyasi qo'shildi.
  • Bir qator majburiyatlarni istisno qilish uchun yangi niqoblar qo'shildi - " ^!" Va " ^- "
  • Taqqoslanayotgan diapazonning faqat bir tomonini ko'rsatish uchun "git range-diff" buyrug'iga "--left-only" va "--right-only" opsiyalari qo'shildi.
  • "git diff" va "git log" buyruqlariga --skip-to= opsiyalari qo'shildi " va "— aylantirish-to = » oʻtish yoki boshlangʻich yoʻllarning oxiriga oʻtish uchun.
  • "git difftool" buyrug'iga "--skip-to=" opsiyasi qo'shildi » uzilgan seansni tasodifiy yo‘ldan davom ettirish uchun.
  • Ishlab chiquvchilar o'rtasidagi ziddiyatli vaziyatlarni hal qilishning asosiy tamoyillarini belgilaydigan Xulq-atvor kodeksi 2.0 versiyasiga yangilandi (ilgari 1.4 versiyasi ishlatilgan).

    Manba: opennet.ru

a Izoh qo'shish