Git 2.26 taqsimlangan manba boshqaruv tizimining chiqarilishi

Mavjud taqsimlangan manbalarni boshqarish tizimini chiqarish git 2.26.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 504 ta ishlab chiquvchi ishtirokida tayyorlangan 64 ta o'zgartirishni o'z ichiga olgan, ulardan 12 tasi birinchi marta ishlab chiqishda ishtirok etgan. asosiy yangiliklar:

  • Standartga o'tkazildi ikkinchi versiya Mijoz masofadan Git serveriga ulanganda foydalaniladigan Git aloqa protokoli. Protokolning ikkinchi versiyasi server tomonidagi filiallar va teglarni filtrlash qobiliyatini ta'minlab, mijozga havolalarning qisqartirilgan ro'yxatini qaytarishi bilan ajralib turadi. Ilgari, har qanday pull buyrug'i mijozga faqat bitta filialni yangilayotganda yoki ombor nusxasi yangilanganligini tekshirganda ham mijozga butun ombordagi havolalarning to'liq ro'yxatini yuboradi. Yana bir e'tiborga molik yangilik - bu asboblar to'plamida yangi funksiyalar mavjud bo'lganda, protokolga yangi imkoniyatlar qo'shish imkoniyati. Mijoz kodi eski protokol bilan mos bo'lib qoladi va yangi va eski serverlar bilan ishlashda davom etishi mumkin, agar server ikkinchisini qo'llab-quvvatlamasa, avtomatik ravishda birinchi versiyaga qaytadi.
  • "Git config" buyrug'iga "-show-scope" opsiyasi qo'shildi, bu ma'lum sozlamalar belgilangan joyni aniqlashni osonlashtirdi. Git turli joylarda sozlamalarni aniqlash imkonini beradi: omborda (.git/info/config), foydalanuvchi katalogida (~/.gitconfig), butun tizim konfiguratsiya faylida (/etc/gitconfig) va buyruq orqali chiziq variantlari va muhit o'zgaruvchilari. "Git config" ni bajarayotganda, kerakli sozlama aynan qayerda aniqlanganligini tushunish juda qiyin. Ushbu muammoni hal qilish uchun "--show-origin" opsiyasi mavjud edi, lekin u faqat sozlamalar aniqlangan faylga yo'lni ko'rsatadi, bu faylni tahrir qilmoqchi bo'lsangiz foydali bo'ladi, lekin agar siz tahrirlasangiz yordam bermaydi. "--system", "--global" yoki "-local" opsiyalari yordamida "git config" orqali qiymatni o'zgartirish kerak. Yangi "--show-scope" opsiyasi o'zgaruvchan ta'rif kontekstini ko'rsatadi va -show-origin bilan birgalikda ishlatilishi mumkin:

    $ git --list --show-scope --show-origin
    global fayl:/home/user/.gitconfig diff.interhunkcontext=1
    global fayl:/home/user/.gitconfig push.default=current
    […] local file:.git/config branch.master.remote=origin
    mahalliy fayl:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'farq.*'
    global diff.statgraphwidth 35
    mahalliy tafovut.rangli oʻzgaruvchan tekislik

    $ git config --global --unset diff.statgraphwidth

  • Bog'lash sozlamalarida hisobga olish ma'lumotlari URL manzillarida niqoblardan foydalanishga ruxsat beriladi. Git-dagi har qanday HTTP sozlamalari va hisob ma'lumotlari barcha ulanishlar (http.extraHeader, credential.helper) va URL-ga asoslangan ulanishlar (credential.https://example.com.helper, credential.https: //misol) uchun o'rnatilishi mumkin. com.yordamchi). Hozirga qadar *.example.com kabi joker belgilarga faqat HTTP sozlamalari uchun ruxsat berilgan, ammo hisob maʼlumotlarini bogʻlash uchun qoʻllab-quvvatlanmagan. Git 2.26-da bu farqlar yo'q qilinadi va, masalan, foydalanuvchi nomini barcha subdomenlarga ulash uchun endi siz quyidagilarni belgilashingiz mumkin:

    [hisob ma'lumotlari "https://*.example.com"]

    foydalanuvchi nomi = ttaylorr

  • Qisman klonlash (qisman klonlar) uchun eksperimental yordamni kengaytirish davom etmoqda, bu sizga ma'lumotlarning faqat bir qismini uzatish va omborning to'liq bo'lmagan nusxasi bilan ishlash imkonini beradi. Yangi relizda "git sparse-checkout add" yangi buyrug'i qo'shildi, bu esa "git" buyrug'i orqali barcha kataloglarni bir vaqtning o'zida ro'yxatga olish o'rniga "checkout" operatsiyasini ishchi daraxtning faqat bir qismiga qo'llash uchun alohida kataloglarni qo'shish imkonini beradi. siyrak hisob-kitoblar to'plami" (siz har safar butun ro'yxatni qayta ko'rsatmasdan, birma-bir katalog qo'shishingiz mumkin).
    Masalan, git/git omborini blokirovka qilmasdan klonlash, tekshirishni faqat ishchi nusxaning asosiy katalogi bilan cheklash va "t" va "Hujjatlar" kataloglari uchun alohida-alohida chiqishni belgilash uchun siz quyidagilarni belgilashingiz mumkin:

    $ git clone --filtr=blob:yo'q --siyrak [elektron pochta bilan himoyalangan]:git/git.git

    $ cd git
    $ git sparse-checkout init --konus

    $ git siyrak-checkout qo'shish t
    ....
    $ git sparse-checkout qo'shish Hujjatlarni
    ....
    $ git siyrak nazorat ro'yxati
    hujjatlar
    t

  • "git grep" buyrug'ining ishlashi, havzaning joriy tarkibini va tarixiy tahrirlarni qidirish uchun ishlatiladigan sezilarli darajada yaxshilandi. Qidiruvni tezlashtirish uchun bir nechta iplar (“git grep –threads”) yordamida ishchi daraxtning mazmunini skanerlash mumkin edi, ammo tarixiy tahrirlardagi qidiruv bir ipli edi. Endi bu cheklov ob'ektni saqlashdan o'qish operatsiyalarini parallellashtirish qobiliyatini amalga oshirish orqali olib tashlandi. Odatiy bo'lib, iplar soni protsessor yadrolari soniga teng ravishda o'rnatiladi, bu ko'p hollarda endi "-threads" opsiyasini aniq belgilashni talab qilmaydi.
  • "git worktree" buyrug'ining quyi buyruqlari, yo'llari, havolalari va boshqa argumentlarini kiritishni avtomatik to'ldirish uchun qo'shimcha yordam, bu sizga omborning bir nechta ishchi nusxalari bilan ishlash imkonini beradi.
  • ANSI qochish ketma-ketligiga ega bo'lgan yorqin ranglar uchun qo'shimcha yordam. Masalan, “git config –color” yoki “git diff –color-moved” ranglarini ajratib ko‘rsatish sozlamalarida yorqin ko‘k uchun “--format” opsiyasi orqali “%C(brightblue)” ni belgilashingiz mumkin.
  • Skriptning yangi versiyasi qo'shildi fsmonitor-qo'riqchi, mexanizm bilan integratsiyani ta'minlash Facebook qo'riqchisi fayl o'zgarishlarini va yangi fayllar paydo bo'lishini kuzatishni tezlashtirish. Yangilangandan so'ng git kerak o'zgartiring omborga ulang.
  • Bitmaplardan foydalanganda qisman klonlarni tezlashtirish uchun qo'shilgan optimallashtirish
    (bitmap mashinalari) chiqishni filtrlashda barcha ob'ektlarni to'liq qidirishni oldini olish uchun. Qisman klonlash vaqtida bloblarni tekshirish (—filtr=blob:none va —filter=blob:limit=n) endi bajariladi.
    sezilarli darajada tezroq. GitHub ushbu optimallashtirish va qisman klonlash uchun eksperimental yordamga ega yamoqlarni e'lon qildi.

  • "Git rebase" buyrug'i "patch+apply" o'rniga standart "birlashtirish" mexanizmi (ilgari "rebase -i" uchun ishlatilgan) yordamida boshqa backendga ko'chirildi. Backendlar ba'zi bir kichik yo'llar bilan farqlanadi, masalan, ziddiyatni hal qilgandan so'ng (git rebase --continue) operatsiyani davom ettirgandan so'ng, yangi backend topshiriq xabarini tahrirlashni taklif qiladi, eskisi esa oddiygina eski xabarni ishlatgan. Eski xatti-harakatga qaytish uchun siz "--apply" opsiyasidan foydalanishingiz yoki "rebase.backend" konfiguratsiya o'zgaruvchisini "apply"ga o'rnatishingiz mumkin.
  • .netrc orqali belgilangan autentifikatsiya parametrlari uchun ishlov beruvchining namunasi qutidan tashqarida foydalanish uchun mos shaklga qisqartirildi.
  • Raqamli imzoni tekshirishni amalga oshiradigan turli elementlar uchun minimal ishonch darajasini belgilash uchun gpg.minTrustLevel sozlamasi qo‘shildi.
  • "git rm" va "git stash" ga "--pathspec-from-file" opsiyasi qo'shildi.
  • Sinov to'plamlarini takomillashtirish SHA-2 o'rniga SHA-1 xesh algoritmiga o'tishga tayyorgarlik ko'rishda davom etdi.

Manba: opennet.ru

a Izoh qo'shish