Pelepasan sistem kontrol sumber anu disebarkeun Git 2.37 diwanohkeun. Git mangrupikeun salah sahiji sistem kontrol versi anu pang populerna, dipercaya, sareng berprestasi tinggi anu nyayogikeun alat pangembangan non-linier anu fleksibel dumasar kana cabang cabang sareng ngahijikeun. Pikeun mastikeun integritas sajarah sareng résistansi kana parobahan retroaktif, hashing implisit tina sakabéh sajarah saméméhna dina unggal commit dipaké, éta ogé mungkin pikeun pariksa tag individu jeung commits kalawan tanda tangan digital ti pamekar.
Dibandingkeun sareng sékrési saméméhna, 395 parobihan diadopsi kana vérsi énggal, disiapkeun sareng partisipasi 75 pamekar, dimana 20 mimitina milu dina pangwangunan. Inovasi utama:
- Mékanisme indéks parsial (indéks jarang), ngan ukur nutupan bagian tina gudang, parantos siap pikeun dianggo sacara umum. Indéks parsial tiasa ningkatkeun kinerja sareng ngahémat rohangan dina repositori anu ngalaksanakeun operasi kloning parsial (sparse-checkout) atanapi damel sareng salinan gudang anu teu lengkep. Pelepasan énggal ngalengkepan integrasi indéks parsial kana acara git, git sparse-checkout, sareng paréntah git stash. Kauntungan kinerja anu paling katingali tina ngagunakeun indéks parsial katingal ku paréntah git stash, anu ningali kanaékan 80% dina laju palaksanaan dina sababaraha kaayaan.
- Mékanisme "cruft packs" anyar parantos dilaksanakeun pikeun ngabungkus objék anu teu tiasa dihontal anu henteu dirujuk dina gudang (henteu dirujuk ku cabang atanapi tag). Objék anu teu tiasa dihontal dipupus ku tukang sampah, tapi tetep dina gudang pikeun sababaraha waktos sateuacan dihapus pikeun ngahindarkeun kaayaan balapan. Pikeun ngalacak periode lumangsungna objék unreachable, perlu pikeun ngagantelkeun tag ka aranjeunna kalayan waktu robah objék sarupa, nu teu ngidinan nyimpen aranjeunna dina hiji file pak nu sagala objék boga waktu robah umum. Saméméhna, nyimpen unggal obyék dina file misah ngakibatkeun masalah lamun aya sajumlah badag seger, objék unreachable nu teu acan layak pikeun ngahapus. mékanisme "cruft bungkus" diusulkeun ngidinan Anjeun pikeun nyimpen sakabeh objék unreachable dina hiji file pak, sarta ngagambarkeun data dina waktu modifikasi unggal objék dina tabel misah disimpen dina file kalawan extension ".mtimes".
- Pikeun Windows sareng macOS, aya mékanisme anu diwangun pikeun nyukcruk parobihan kana sistem file, anu ngamungkinkeun anjeun pikeun ngahindarkeun sadaya diréktori kerja nalika ngalakukeun operasi sapertos "status git". Saméméhna, pikeun ngalacak parobahan, utilitas éksternal pikeun nyukcruk parobahan dina FS, kayaning Watchman, bisa disambungkeun via hook, tapi ieu diperlukeun pamasangan program tambahan sarta konfigurasi. Ayeuna pungsionalitas anu ditangtukeun diwangun sareng tiasa diaktipkeun ku paréntah "git config core.fsmonitor true".
- Dina paréntah "git sparse-checkout", dukungan pikeun alternatif pikeun mode "-cone", metode nangtukeun témplat pikeun kloning parsial, parantos dinyatakeun luntur, anu ngamungkinkeun, nalika nangtukeun bagian tina gudang anu tunduk kana. operasi kloning, pikeun daptar file individu ngagunakeun sintaksis ".gitignore", nu teu ngidinan pamakéan pikeun optimasi indexes parsial.
- Ngaronjat kalenturan dina ngonpigurasikeun fsync () panggero pikeun siram parobahan disk. Rojongan pikeun "angkatan" strategi sinkronisasi geus ditambahkeun kana "core.fsyncMethod" parameter, nu ngidinan ngagancangkeun karya nalika nulis angka nu gede ngarupakeun file individu ku accumulating parobahan dina cache writeback, nu reset ku fsync tunggal () nelepon. Tes, nu nyababkeun 500 file ditambahkeun maké paréntah "git add", réngsé dina 0.15 detik nalika mode anyar diaktipkeun, bari nelepon fsync () nyandak 1.88 detik pikeun tiap file, sarta tanpa ngagunakeun fsync - 0.06 detik .
- Paréntah traversal cabang sapertos "git log" sareng "git rev-list" ayeuna gaduh pilihan "-since-as-filter = X" anu ngamungkinkeun anjeun nyaring inpormasi ngeunaan komitmen anu langkung lami tibatan "X". Beda sareng pilihan "-saprak", paréntah énggal dilaksanakeun sabagé saringan anu henteu ngeureunkeun panéangan saatos komitmen munggaran langkung lami tibatan waktos anu ditangtukeun.
- Dina paréntah "git remote", nalika netepkeun bendera "-v", inpormasi ngeunaan klon parsial tina gudang ditampilkeun.
- Ditambahkeun setelan "transfer.credentialsInUrl", anu tiasa nyandak nilai "ngingetkeun", "maot" sareng "ngidinan". Lamun dieusian dina parameter "remote. .url" kredensial plaintext, nyobian ngalakukeun operasi "dipulut" atawa "push" bakal gagal jeung kasalahan lamun setelan "transfer.credentialsInUrl" disetel ka "maot", atawa peringatan lamun disetel ka "ngingetkeun".
- Sacara standar, palaksanaan anyar mode interaktif paréntah "git add -i", ditulis ulang tina Perl ka C, diaktipkeun.
sumber: opennet.ru
