Sistem kontrol sumber Git 2.41 kasedhiya

Sawise telung sasi pembangunan, release saka sistem kontrol sumber distribusi Git 2.41 wis diterbitake. Git minangka salah sawijining sistem kontrol versi sing paling populer, dipercaya, lan kinerja dhuwur sing nyedhiyakake alat pangembangan non-linear sing fleksibel adhedhasar cabang cabang lan gabung. Kanggo mesthekake integritas sejarah lan resistensi kanggo owah-owahan retroaktif, hashing implisit saka kabeh riwayat sadurunge ing saben commit digunakake, uga bisa kanggo verifikasi tag individu lan commit karo teken digital saka pangembang.

Dibandhingake karo release sadurungΓ©, 542 owah-owahan ditampa ing versi anyar, disiapake karo partisipasi 95 pangembang, kang 29 njupuk bagΓ©yan ing pembangunan kanggo pisanan. Inovasi utama:

  • Ngapikake penanganan obyek sing ora bisa digayuh sing ora dirujuk ing gudang (cabang utawa tag ora dirujuk). Obyek sing ora bisa digayuh dicopot dening tukang sampah, nanging tetep ana ing gudang kanggo wektu tartamtu sadurunge dicopot kanggo nyegah kahanan balapan. Kanggo nglacak wektu obyek sing ora bisa digayuh, perlu kanggo ngiket label karo wektu owah-owahan obyek sing padha, sing ora ngidini nyimpen ing siji file file, ing ngendi kabeh obyek duwe wektu owah-owahan sing umum. Sadurunge, saben obyek sing ora bisa digayuh disimpen ing file sing kapisah, sing nyebabake masalah yen ana akeh obyek sing ora bisa digayuh seger sing durung bisa dibusak. Ing rilis anyar, kanthi standar, mekanisme "cruft packs" digunakake kanggo ngemas obyek sing ora bisa digayuh, sing ngidini nyimpen kabeh obyek sing ora bisa digayuh ing siji file paket, lan nggambarake data babagan wektu modifikasi saben obyek ing tabel kapisah sing disimpen ing a file kanthi ekstensi ".mtimes" lan disambung nggunakake file indeks kanthi ekstensi ".idx".
    Sistem kontrol sumber Git 2.41 kasedhiya
  • Kanthi gawan, njaga indeks mbalikke (revindex) ing disk kanggo file paket diaktifake. Nalika dites ing repositori torvalds / linux, nggunakake indeks mbalikke ngidini kita nyepetake operasi "git push" intensif sumber daya kanthi 1.49 kaping, lan operasi sing prasaja, kayata ngitung ukuran obyek siji nggunakake "git cat- file --batch='%(ukuran obyek: disk)' Β» 77 kaping. File (".rev") kanthi indeks mbalikke bakal disimpen ing gudang ing direktori ".git/objects/pack".

    Elinga yen Git nyimpen kabeh data ing wangun obyek, sing diselehake ing file sing kapisah. Kanggo nambah efisiensi nggarap repositori, obyek uga dilebokake ing file paket, ing ngendi informasi ditampilake ing wangun stream obyek sawise siji liyane (format sing padha digunakake nalika nransfer obyek nganggo git fetch lan git. perintah push). File indeks (.idx) digawe kanggo saben file paket, sing ngijini sampeyan kanggo cepet banget nemtokake offset ing file Pack kang obyek diwenehi disimpen dening pengenal obyek.

    Indeks mbalikke sing kalebu ing rilis anyar ditujokake kanggo nyepetake proses nemtokake ID obyek saka informasi babagan lokasi obyek ing file paket. Sadurunge, konversi kasebut ditindakake kanthi cepet sajrone parsing file paket lan mung disimpen ing memori, sing ora ngidini nggunakake maneh indeks kasebut lan meksa indeks kasebut digawe saben wektu. Operasi mbangun indeks dikurangi kanggo mbangun pasangan obyek-posisi lan ngurutake miturut posisi, sing bisa njupuk wektu suwe kanggo file paket gedhe.

    Contone, operasi nampilake isi obyek, sing nggunakake indeks langsung, 62 kaping luwih cepet tinimbang operasi nuduhake ukuran obyek, sing data hubungan posisi-kanggo-obyek ora diindeks. Sawise nggunakake indeks mbalikke, operasi iki wiwit njupuk kira-kira wektu sing padha. Indeks mbalikke uga ngidini sampeyan nyepetake operasi ngirim obyek nalika nglakokake fetch lan push printah kanthi langsung nransfer data sing wis digawe saka disk.

    Sistem kontrol sumber Git 2.41 kasedhiya

  • Nambahake dhukungan kanggo ngliwati header WWW-Authenticate antarane pawang kredensial lan layanan otentikasi menyang protokol "pembantu kredensial" sing digunakake kanggo ngliwati kredensial nalika ngakses repositori sing diwatesi. Dhukungan kanggo header WWW-Authenticate ngidini sampeyan ngliwati paramΓ¨ter ruang lingkup OAuth supaya bisa misahake akses pangguna menyang repositori lan mbatesi ruang lingkup sing kasedhiya kanggo panjaluk.
  • Opsi format sing ditambahake "%(ahead-behind: )", sing ngidini sampeyan langsung entuk informasi babagan jumlah komit sing ana utawa ora ana ing cabang tartamtu, relatif marang cabang liyane (sepira siji cabang lags utawa luwih dhisik tinimbang liyane ing tingkat komitmen). Sadurunge, njupuk informasi iki mbutuhake rong printah sing kapisah: "git rev-list --count main..my-feature" kanggo entuk nomer commit unik kanggo cabang, lan "git rev-list --count my-feature.. utama" kanggo entuk nomer sing ilang. Saiki petungan kasebut bisa dikurangi dadi siji printah, sing nyederhanakake pawang nulis lan nyuda wektu eksekusi. Contone, kanggo nuduhake cabang sing ora digabung lan ngevaluasi manawa ana ing mburi utawa ing ngarep cabang utama, sampeyan bisa nggunakake siji-liner: $ git for-each-ref --no-merged=origin/HEAD \ --format=' %(refname:short) %(ahead-behind :origin/HEAD)' \ refs/heads/tb/ | column -t tb/cruft-extra-tips 2 96 tb/for-each-refβ€”ora kalebu 16 96 tb/roaring-bitmaps 47 3 tinimbang script sing digunakake sadurunge, yaiku 17 kaping luwih alon: $ git for-each-ref β€” format='%(refname:short)' --no-merged=origin/HEAD \ refs/heads/tb | nalika maca ref do ahead="$(git rev-list --count origin/HEAD..$ref)" behind="$(git rev-list --count $ref..origin/HEAD)" printf "%s %d %d\n" "$ref" "$ahead" "$behind" rampung | column -t tb/cruft-extra-tips 2 96 tb/for-each-refβ€”ora kalebu 16 96 tb/roaring-bitmaps 47 3
  • Nambahake opsi "--porcelain" kanggo printah "git fetch", sing ngasilake output ing format " ”, kurang bisa diwaca, nanging luwih trep kanggo parsing ing skrip.
  • Nambahake setelan "fetch.hideRefs" kanggo nyepetake operasi "git fetch" kanthi ndhelikake bagean saka pranala ing gudang lokal ing tahap verifikasi manawa server ngirim obyek lengkap, sing ngirit wektu kanthi mbatesi mriksa mung menyang server. saka kang data langsung dijupuk. Contone, nalika nguji sistem kanthi repositori sing ngemot akeh pranala njaba sing dilacak, ora kalebu kabeh pranala kajaba sing ditujokake menyang server target $ remot nyuda operasi "git fetch" saka 20 menit dadi 30 detik. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remotes/$remote \ fetch $remote
  • Printah "git fsck" ngetrapake kemampuan kanggo mriksa korupsi, pencocokan checksum, lan bener nilai ing bitmap aksesibilitas lan indeks mbalikke.
  • Printah "git clone --local" saiki nampilake kesalahan nalika nyoba nyalin saka repositori sing ngemot pranala simbolis ing $GIT_DIR.

Source: opennet.ru

Add a comment