Ang distributed source control system na Git 2.48 ay inilabas na. Ang Git ay lubos na produktibo at nagbibigay ng mga non-linear na tool sa pagpapaunlad batay sa pagsasanga at pagsasama. Upang matiyak ang integridad ng kasaysayan at paglaban sa mga retroaktibong pagbabago, ang implicit na pag-hash ng buong nakaraang kasaysayan sa bawat commit ay ginagamit, pati na rin ang mga digital na lagda ng mga developer ng mga indibidwal na tag at commit. Ang Git code ay ipinamamahagi sa ilalim ng lisensya ng GPLv2+.
Kung ikukumpara sa nakaraang release, ang bagong bersyon ay naglalaman ng 605 pagbabago na inihanda kasama ang partisipasyon ng 93 developer, kung saan 35 ang nakikilahok sa development sa unang pagkakataon. Mga pangunahing inobasyon:
- Ipinatupad ang kakayahang bumuo gamit ang Meson build system, bilang karagdagan sa GNU Make at CMake. Upang bumuo ng Git maaari mo na ngayong gamitin ang command na "meson setup build && ninja -C build". Napansin na ang Makefile na ginamit kapag gumagamit ng GNU Make ay lumago sa 3887 na linya at hindi kasing simple ng gusto namin. Pinapasimple ng toolkit ng Meson ang build system, maginhawa para sa mga cross-platform na build, at ginagawang mas accessible ang gusali sa mga baguhan o developer na walang karanasan sa Make utility. Walang planong ihinto ang suporta para sa Make at CMake sa nakikinita na hinaharap.
- Nagdagdag ng mga opsyon sa pagbuo na nagbibigay-daan sa paggamit ng mga alternatibong implementasyon ng SHA-1 hash kapag kinakalkula ang mga checksum na ginagamit upang beripikahin ang integridad ng mga data block sa mga pack file. Mahalaga ang pagganap ng checksum, halimbawa, kapag nagko-clone ng kernel repository. Linux kumukonsumo ng humigit-kumulang 78% ng oras ng CPU. Kasama sa default na implementasyon ang mga karagdagang collision check at proteksyon laban sa mga pag-atake ng SHA-1, tulad ng SHAttered at Shambles. Ang overhead-intensive na proteksyong ito ay kapaki-pakinabang lamang kapag gumagamit ng SHA-1 para sa mga layuning kriptograpiko at walang silbi para sa pag-verify ng integridad ng data ng index.
Upang bumuo ng Git na may mas mabilis na pagpapatupad ng SHA-1 na hindi angkop para sa mga cryptosystem, iminumungkahi ang isang serye ng *_UNSAFE na mga opsyon, halimbawa, "OPENSSL_SHA1_UNSAFE". Sa GitHub, ang pagbuo na may pinasimpleng SHA-1 ay nagbigay-daan para sa 10-13% na pagtaas sa pagganap ng pagkuha ng data at mga operasyon sa pag-clone.
- Idinagdag ang kakayahang gamitin ang opsyong "-remerge-diff" sa command na "range-diff", na nagbibigay-daan sa iyong ipakita ang mga pagkakaiba sa pagitan ng pangkalahatang resulta ng merge at ang aktwal na data na makikita sa commit pagkatapos iproseso ang command na "merge". Kapag ginagamit ang opsyong "--remerge-diff," hindi pinaghihiwalay ang mga pagkakaiba sa pagitan ng mga resolusyon ng salungatan para sa bawat sangay ng magulang, ngunit ipinapakita ang pangkalahatang pagkakaiba sa pagitan ng file na may mga pagsasalungat sa pagsasanib at ng file na nalutas ang mga salungatan. Sa konteksto ng command na range-diff, maaaring maging kapaki-pakinabang ang isang bagong opsyon para sa paghahambing ng mga set ng commit pagkatapos na mailipat ng rebase command ang isang sequence ng commit na may opsyong --rebase-merges.
- Nagdagdag ng kakayahang magpatakbo ng isang Git test suite na may naka-enable na memory leak detection. Dahil ang git ay nagbibigay ng mga utility na lumabas pagkatapos ng tinatawag na function, ang mga pagtagas ng memorya ay hindi nakita bilang isang malaking problema. Ang pangangailangan na ganap na alisin ang mga pagtagas ng memorya ay naging apurahan pagkatapos magsimula ang trabaho sa paglipat ng panloob na pag-andar sa isang hiwalay na aklatan, na maaaring magamit sa mga prosesong matagal nang tumatakbo.
- Ang isang listahan ng mga hindi na ginagamit na mga mode at feature na binalak na ihinto sa hinaharap ay sinimulang i-compile. Inaasahan na ang hindi na ginagamit na functionality ay aalisin sa Git 3.0 release, na magsasama ng mga pagbabago na sumisira sa backward compatibility.
- Ang patuloy na pag-optimize ng command na "git for-each-ref", na nagpapakita ng listahan ng mga link sa repository. Ang isang pag-optimize na pinagsasama-sama ang mga humahawak para sa pag-filter ng link at pag-format ng output ay nalalapat na ngayon hindi lamang sa hindi pinagsunod-sunod na output, ngunit pati na rin kapag ang "--sort" na opsyon ay tinukoy.
- Pinahusay na pagpapatupad ng "reftable" na backend na may block storage para mahusay na mag-imbak ng mga branch at tag na reference sa repository. Binibigyang-daan ka ng Reftable na makabuluhang pabilisin ang paghahanap, pagbabasa at pagsusulat sa mga repository na may napakalaking bilang ng mga link. Ang bagong bersyon ay huminto sa pagtawag sa ilang mga auxiliary na API upang higit pang ibukod ang libgit library mula sa pagiging isang build dependency. Ipinatupad ang adaptive handling ng mga error na ibinalik ng mga function ng memory allocation (hindi na humahantong sa mga pag-crash ang hindi sapat na memorya). Ang mga pagpapatakbo ng paggawa ng link ay pinabilis at ang pagkonsumo ng memorya ay nabawasan.
- Nalutas ng bahagyang pagpapatupad ng cloning ang mga isyu na nagdulot ng pag-loop ng repository at katiwalian pagkatapos isagawa ang command na "git gc."
- Kapag isinasagawa ang utos na "git fetch " kung walang "refs/remotes/" sa lokal na sistema /HEAD" at ang presensya sa kabilang panig ng sangay kung saan ang HEAD ay tumutukoy, "refs/remotes/ /HEAD" ngayon ay nagre-redirect sa thread na ito. Upang kontrolin ang pag-synchronize "refs/remotes/ /HEAD" na may halagang HEAD sa kabilang panig ng koneksyon, naidagdag ang remote na setting. .followRemoteHEAD".
- Idinagdag ang setting na "remote. .serverOption" katulad ng command line na opsyon na "-serverOption= "
- Tinitiyak ng command na "git rebase --rebase-merges" na ginagamit ang mga pangalan ng sangay bilang mga label hangga't maaari.
- Nagdagdag ng flag na '-e' sa mga command na 'git notes add' at 'git notes append', na nagbubukas ng note sa isang external na text editor na tinukoy sa pamamagitan ng GIT_EDITOR environment variable.
- Pinahusay na compatibility sa GCC 15 at sa C23 standard.
- Ang suporta para sa mga mas lumang bersyon ng libcURL at Perl ay hindi na ipinagpatuloy.
Pinagmulan: opennet.ru
