jaotatud lĂ€htekoodi haldamise sĂŒsteemi vĂ€ljaanne . Git on ĂŒks populaarsemaid, usaldusvÀÀrsemaid ja kĂ”rge tulemuslikkusega versioonihaldussĂŒsteeme, mis pakub paindlikke vĂ”imalusi mitte-lineaarseks arendamiseks, tuginedes harude ja harude ĂŒhendamise meetoditele. Ajaloo terviklikkuse ja tagasivaatavate muudatuste suhtes vastupidavuse tagamiseks kasutatakse varjatud hash-kontrollimist kogu varasema ajaloo kohta igas commit'is, samuti on vĂ”imalik kinnitada eraldi siltide ja commit'ide digitaalsete allkirjadega.
VÔrreldes eelmise vÀljaandega on uude versiooni integreeritud 745 muudatust, mille on ette valmistanud 74 arendajat, kellest 18 osaleb arenduses esmakordselt. :
- Alates versioonist 1.18 on uus commit'ide komplekti teisendamise reĆŸiim «git rebase ârebase-merges» asendanud vana valiku «âpreserve-merges», mis on nĂŒĂŒd mĂ€rgitud vananenuks. Operatsioon «git rebase» kasutatakse commit'ide seeriade asendamiseks uue baasi commit'iga, nĂ€iteks teatud haru, kus arendatakse uut funktsiooni, sĂŒnkroonimiseks praeguse master-haru seisuga, mis sisaldab pĂ€rast haru eraldamist tehtud parandusi:
o â o â o (my-feature)
/
o â o â o â o â o (master)
o â o â o (my-feature)
/
o â o â o â o â o (master)
Kannete sĂ€ilitada harude struktuuri kĂ€tkese harus, varem sai kasutada valikut ââpreserve-mergesâ, mis vĂ”imaldas interaktiivses reĆŸiimis (git rebase -i âpreserve-merges) redigeerida commitide ajalugu, kuid ei taganud kogu repo struktuuri sĂ€ilitamist. Uus reĆŸiim âârebase-mergesâ vĂ”imaldab sĂ€ilitada muudatuste struktuuri kĂ€tkese harus, pakkudes samal ajal tĂ€ielikku interaktiivsete toimingute komplekti, sealhulgas commitide eemaldamist, ĂŒmbergruppimist ja ĂŒmbernimetamist.
NĂ€iteks âârebase-mergesâ saate commite eraldi harust uuemale master-harule ĂŒles laadida, sĂ€ilitades samal ajal harude struktuuri kĂ€tkese harus ning teha samal ajal mĂ”ned muudatused commitide mĂ€rkustes.
- Lisatud on tugi uue haru loomiseks kahe teise haru sulandamise pĂ”hjal (merge base, ĂŒhiselt esivanemalt) kĂ€skude âgit branch new AâŠBâ ja âgit checkout -b new AâŠBâ abil, kus âAâŠBâ tĂ€hendab sulandamisaluse mÀÀratlemist kahe mÀÀratud commit'i vahel, sarnaselt sellele, kuidas âgit checkout AâŠBâ nihutab HEAD'i baaskommitisse ja âdiff AâŠBâ nĂ€itab muudatusi commit'i âBâ ja ĂŒhiselt commit'iga âAâ seotud esivanema vahel.
NĂ€iteks töötades eraldi haru my-feature kallal, saab soovitatud funktsiooni kasutada olukordades, kus on vajalik alustada teisest harust, nĂ€iteks samast kohast master-harus, kust haru my-feature on vĂ€lja tĂ”mmatud. Varem tuli seda kĂ€sitsi jĂ€lgida muudatuste logis, mis tekitas ebamugavusi pika muudatusajaloo korral, seejĂ€rel kĂ€ivitada âgit merge-base master my-featureâ, et arvutada master'i ja my-feature'i harude vahelise sulandusbaasi hash, ning luua uus haru vastavalt ĂŒhiselt esivanemale âgit branch my-other-feature hashâ. Git 2.22-s saab kahe teise haru sulandamise alusel uue haru loomiseks kasutada sĂŒntaksit âgit branch my-other-feature AâŠBâ;
- Lisatud on vĂ”imalus kasutada kĂ€sku âgit branch âshow-currentâ, et kuvada haru nime, mis saadakse checkout toimingu kĂ€igus;
- Lisatud on vĂ”imalus kasutada kĂ€sku âgit checkout âno-overlay â dirâ, mis vĂ”imaldab checkout toimingu kĂ€igus viia kausta dir sisu tĂ€ielikult vastavusse master-haru olekuga. NĂ€iteks, kui kohaliku kausta dir koopias on fail, mis puudub master-harus, jĂ€etakse see vaikimisi pĂ€rast âgit checkout master â dirâ kĂ€ivitamist alles, kuid ââno-overlayâ valiku kasutamisel kustutatakse see;
- KĂ€skluses âgit diffâ on kasutusele vĂ”etud universaalne API valikute tĂ”lgendamiseks, mis on vĂ”imaldanud ĂŒhtlustada valikute töötlemist teiste git utiliididega. NĂ€iteks on âgit diffâ kĂ”igi valikute jaoks nĂŒĂŒd saadaval ka nende antagonistid (ââfunction-contextâ ja ââno-function-contextâ);
- Lisatud on vĂ”imalus filtreerida âgit logâ vĂ€ljundis kommitite kĂŒlge kinnitatud laiendatud silte (âtrailerâ â lisainfo lipud, nagu Signed-off-by ja Co-authored-by). Silte on vĂ”imalik filtreerida nii vĂ”tme kui vÀÀrtuse jĂ€rgi, nĂ€iteks:
âgit log âpretty=»%(trailers:key=Reviewed-by,valueonly)»; - Lisatud uus jĂ€lgimismehhanism Trace2, mis pakub paindlikumat ja struktureeritumat vĂ€ljundformaati. Trace2 vĂ”imaldab koguda telemeetriat teostatavate toimingute ja tootlikkuse andmete kohta, et tagada pĂ”hjalikum analĂŒĂŒs ja tĂ”rkeotsing (kasutaja mÀÀratud kĂ€sitleja, andmeid ei saadeta vĂ€ljapoole);
- TĂ€htsustatud on «git bisect» aruanne, kus probleemsed commid on nĂŒĂŒd paremini vĂ€lja toodud ja esitatud on kokkuvĂ”tlik statistika muudatuste kohta igas failis (muudetud ridade arvu tasemel);
- Kataloogide ĂŒmbernimetamise tuvastamise heuristika on ĂŒmber korraldatud, et vĂ€ltida vale ĂŒmbernimetamise sildi seadmist. Kahtluse korral mĂ€rgitakse sellised kataloogid nĂŒĂŒd konfliktiolukordadena;
- Etteseatud on hoiatus, kui proovite seada silti teisele silti, mida tavaliselt tehakse ekslikult ja see vÔib viia sildi seadmiseni valesse committi (nt kÀsk «git tag -f -m «updated message» my-tag1 my-tag2» loob sildi vanale sildile, samas kui arendaja arvas, et uus silt seatakse commidile, millele osutab vana silt);
- Kaartide reposteerimise genereerimine on lubatud (diskstruktuur âreachability bitmapsâ), mis salvestab andmed objektigruppide kohta, mis on iga kinnituse jaoks saadaval, vĂ”imaldades kiirelt kindlaks teha alustava objekti olemasolu. Antud struktuur vĂ€hendab oluliselt andmete vĂ€ljatĂ”mbamisoperatsioonide (git fetch) tĂ€itmise aega.
Allikas: opennet.ru
