Git 2.24 taqsimlangan manba boshqaruv tizimining chiqarilishi

Mavjud taqsimlangan manbalarni boshqarish tizimini chiqarish git 2.24.0. 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 oldingi butun tarixning yashirin xeshlanishi qo'llaniladi, shuningdek, ishlab chiquvchilarning raqamli imzolari bilan individual teglar va majburiyatlarni tasdiqlash mumkin.

Oldingi versiya bilan taqqoslaganda, yangi versiya 544 ta ishlab chiquvchi ishtirokida tayyorlangan 78 ta o'zgartirishni o'z ichiga olgan, ulardan 21 tasi birinchi marta ishlab chiqishda ishtirok etgan. asosiy yangiliklar:

  • Konfiguratsiya makroslari uchun qo'shimcha yordam qo'shildi, bu orqali siz turli xil sozlamalar to'plamlari o'rtasida ular bilan bog'liq bo'lgan maxsus variantlar haqida batafsil ma'lumot bermasdan tezda almashishingiz mumkin. Makroslar yordamida u yoki bu funksiyani faollashtirish uchun qaysi sozlamalarni o'zgartirish kerakligini eslab qolishning hojati yo'q. Misol uchun, agar katta ombor sekin bo'lsa, siz yangi indekslash mexanizmiga o'tishni, yo'l prefiksini siqishni yoqishni va index.version ni 4 ga o'rnatish va core.untrackedCache ni yoqish orqali kuzatilmagan fayl keshini yoqishni xohlashingiz mumkin. Makroslar sizga hujjatlarda to'g'ri echimni izlash uchun vaqtni behuda sarflamaslikka, balki ko'p sonli fayllarga ega omborlarni optimallashtirish bilan sozlamalarni darhol faollashtirishga imkon beradi:

    git config feature.manyFiles rost

  • Sukut bo'yicha ob'ektlarni topshirish grafigi (commit-graph) ko'rinishida saqlash yoqilgan bo'lib, unda indekslash uchun boshqa ob'ektlar bilan bog'langan ob'ektlar xeshlarining chiziqli ro'yxati emas, balki grafik shaklidagi tuzilma qo'llaniladi. . Agar ilgari ma'lum bir tuzatishni o'z ichiga olgan relizlarni aniqlash uchun havolalarni qidirish uchun har bir ob'ektni diskdan yuklash kerak bo'lsa, u holda grafik ko'rinishida saqlanganida siz barcha kerakli havolalarni darhol aniqlashingiz mumkin. Linux yadrosi va Git repozitariylarida majburiy grafik ko'rinishidagi saqlashga o'tish bizga filiallar bilan operatsiyalar samaradorligini deyarli ikki baravar oshirishga imkon berdi. Git 2.24 ga yangilangandan so'ng yangi saqlash usulini yoqish uchun siz "git gc" buyrug'ini bajarishingiz kerak.

    Commit-graph bilan bog'liq o'zgarishlar qatorida, shuningdek, commit-graph bilan bog'liq buyruqlarda (git commit-graph write, “git commit-graph verify” va boshqalar) operatsiyaning borishi ko'rsatkichini amalga oshirish kiritilganligini ham ta'kidlaymiz. boshqa buyruqlar bilan umumiy shaklga. .). Rivojlanish ko'rsatkichi endi sukut bo'yicha faqat terminal uchun ko'rsatiladi (xulq-atvorni o'zgartirish uchun "-[no-]progress" opsiyasidan foydalaning). Bundan tashqari, fetch.writeCommitGraph yangi konfiguratsiya parametri qo'shildi, bu "git fetch" operatsiyalari paytida faylni commit grafigi bilan avtomatik yangilash imkonini beradi (tashqi omborlardan olingan barcha topshiriqlar darhol commit-grafaga o'tadi, hech qanday ehtiyoj sezilmasdan. auto-gc-ni alohida ishga tushiring);

  • O'zgarishlar tarixini qayta yozish buyrug'i qo'shildi - "git filter-repo", bu buyruqqa oddiyroq muqobildir"git filtri filiali» ombordagi o'zgarishlar tarixi bo'yicha operatsiyalarni bajarish (masalan, faylni ombordan o'chirish yoki ma'lum bir katalogdagi o'zgarishlar tarixini olish). Samaradorlikni oshirish uchun tartibli tahlil qilish o'rniga, git filter-repo uzluksiz oqim ko'rinishida tarix ko'rinishida operatsiyalarni bajaradi.

    Tarixni filtrlash “-path-{glob,regex}” opsiyasi yordamida amalga oshiriladi, bu sizga oddiy maskalardan ham, oddiy iboralardan ham foydalanish imkonini beradi. Shuningdek, qidiruvni amalga oshirish va belgilangan o'lchamdan kattaroq bo'lgan ikkilik ob'ektlarni almashtirish yoki tozalash imkoniyatlari mavjud. Har bir qayta yozilgan majburiyat yangi SHA-1 xesh identifikatori bilan ta'minlanadi va almashtirilgan majburiyatga barcha havolalar yangi identifikatorga muvofiq yangilanadi.

    Ombor haqidagi statistik ma'lumotlarning qisqacha mazmunini ko'rsatish uchun (turi bo'yicha ob'ektlar soni, eng katta fayllar va kataloglar, qaysi kengaytmalar diskda ko'proq joy talab qiladi va hokazo) "-analyze" opsiyasi taqdim etiladi. Funksionallikni kengaytirish uchun Python-da o'zboshimchalik bilan qayta qo'ng'iroq qilish ishlov beruvchilarini ulash mumkin, ular orqali siz yangi kichik buyruqlar yaratishingiz va turli hodisalarni qayta ishlashingiz mumkin (masalan, yangi fayl turlari);

  • Havola nomlaridan variantlarni ajratish uchun “--end-of-options” opsiyasi qo‘shildi, ular “-” belgisi bilan boshlanib, variantlar sifatida ko‘rib chiqilishi mumkin (“git log --end-of-options -super-dangerous-option” ). Agar kundalik hayotda bunday nomlardan "git log 'refs/heads/—super-dangerous-option'" sifatida qochib qutulish mumkin bo'lsa, skriptlar nomlar maydonini belgilashda muammolarga duch kelishi mumkin. Umumiy qabul qilingan ajratuvchi " - " bu holatda qo'llanilmaydi, chunki u allaqachon havola nomlarini fayllardan ajratish uchun ishlatiladi (masalan, "git log —end-of-options —super-dangerous-option ^master — path/to" /fayl”);
  • Tanlash uchun “git rebase --rebase-merges”ga “--strategy” va “--strategy-option” opsiyalari qo‘shildi. birlashish strategiyalari;
  • Yangi “.git/hooks/pre-merge-commit” ishlov beruvchisi qo‘shildi, u birlashma tugallangandan so‘ng, lekin natija yozilishidan oldin chaqiriladi;
  • Muayyan buyruqlar sozlamalari bilan bog'liq holda konfiguratsiya o'zgaruvchilarini to'ldirish uchun qo'llab-quvvatlash buyruqni bajarish mexanizmiga qo'shildi.
    Masalan, agar siz “git -c core.autocrlf=false add path/to/my/file” yozishingiz kerak bo‘lsa, lekin “core.autocrlf” o‘zgaruvchisining aniq nomini eslay olmasangiz, Tab tugmasini bosib, ishora.

Bundan tashqari, Git ishlab chiquvchilari qo'shilgan ziddiyatli vaziyatlarni hal qilishning asosiy tamoyillarini belgilaydigan loyiha ishtirokchisining xulq-atvor kodeksi. Hujjat tavsiyalarga asoslanadi "Himoyachi shartnomasi", Linux yadrosi, Eclipse, Freedesktop, GitLab, Ruby va Kubernetes kabi ochiq kodli loyihalarda qo'llaniladi. Hujjatda dunyoqarashi, yoshi, jinsi, diniy afzalligi, ta’lim darajasi, ijtimoiy mavqei va millatidan qat’i nazar, barcha ishtirokchilar uchun teng imkoniyatlar belgilangan. Hamjamiyat do'stona muloqot, tushunish, boshqa ishtirokchilarning muammolariga hamdardlik, konstruktiv tanqidni qabul qilish va butun jamoa uchun eng yaxshi qarorlarni qabul qilishni ma'qullaydi. Trolling, haqoratli muloqot, kamsitishga urinishlar, ta'qib qilish, shaxsiy hayotning daxlsizligini buzish, shaxsiy ma'lumotlarni oshkor qilish va professional muloqot uchun nomaqbul deb hisoblanishi mumkin bo'lgan boshqa harakatlarga yo'l qo'yilmaydi.

Manba: opennet.ru

a Izoh qo'shish