Esitatud on Git 2.54 hajutatud versioonihaldussĂŒsteemi vĂ€ljalase. Git pakub kĂ”rget jĂ”udlust ja vĂ”imalusi mittejĂ€rgnevaks arenduseks, kasutades harude ja liitmise aluseid. Ajaloo terviklikkuse ja tagasivaateliste muutuste vastupidavuse tagamiseks kasutatakse mitteavatud rĂ€mpsposti kogu varasema ajaloo igas kommis, samuti on eraldi siltide ja commiide digitaalne allkirjastamine arendajate poolt. Git kood jaotatakse vĂ€lja GPLv2+ litsentsi alusel.
Uues versioonis on vÔrreldes eelmise vÀljalaske versiooniga vastu vÔetud 770 muudatust, mille on ette valmistanud 137 arendajat (66 neist osaleb Git arenduses esmakordselt). Peamised uuendused:
- On rakendatud kĂ€sk âgit historyâ, mis pakub katsetamiseks ajalugu muutmise vĂ”imalusi, mis on lihtsamad ja turvalisemad kui muudatuste baasiga liitmine kĂ€suga âgit rebaseâ. Pakutakse kahte operatsiooni:
- «git history reword <commit>» sĂ”numi ĂŒmberkirjutamiseks mÀÀratud commit'is ilma töökoormust ja indeksi muutmata (vĂ€lja arvatud kommentaar, ĂŒlejÀÀnud jÀÀb muutumatuks). NĂ€iteks trĂŒkivea parandamiseks.
- «git history split <commit>» mÀÀratud commit'i interaktiivseks jagamiseks kaheks erinevaks commit'iks, kus valitud osad liigutatakse algsest commit'ist tÀiendavasse commit'i.
Tulevastes vĂ€ljaandes oodatakse tĂ€iendavate kĂ€skude lisamist: «git history fixup» commit'i parandamiseks, «git history drop» commit'i eemaldamiseks, «git history reorder» commit'ide jĂ€rjekorra muutmiseks ja «git history squash» commit'ide ĂŒhendamiseks.
- Uus meetod kĂ€itaja (hook) mÀÀramiseks konfiguratsioonifailides on rakendatud. Selle asemel, et asetada kĂ€itaja skripte kataloogi «.git/hooks» igas repos, saab nĂŒĂŒd kĂ€itajaid otse mÀÀrata konfiguratsioonifailides. Seadeid saab siduda kas repo vĂ”i mÀÀrata kĂ”ikidele repodele kehtivates konfiguratsioonifailides (/etc/gitconfig) vĂ”i kasutajarepos (~/.gitconfig). Ăhele sĂŒndmusele on vĂ”imalik siduda mitu kĂ€itajat. Skripte kataloogist «.git/hooks» kutsutakse endiselt, kuid need kĂ€ivitatakse pĂ€rast konfiguratsioonifailide kĂ€itajaid. KĂ€itaja nimekirja vaatamiseks tuleb kasutada kĂ€sku «git hook list», ning konkreetse kĂ€itaja deaktiveerimiseks seade «hook..enabled = false». [hook «linter»] event = pre-commit command = ~/.bin/linter âcpp20 [hook «no-leaks»] event = pre-commit command = ~/.bin/leak-detector $ git hook list pre-commit global linter ~/.bin/linter âcpp20 local no-leaks ~/.bin/leak-detector
- Git maintenance'i meeskonnas on vaikimisi kasutusel strategia «geometric» («git config set maintenance.strategy geometric»), mis aitab vĂ€hendada suurte monoreposiitide hooldamise aega. Uus strateegia, vĂ”rreldes varasema strateegiaga, mis kasutas sama loogikat nagu git gc meeskond, vĂ€ldib kĂ”igi objektide ĂŒmberpakendamist ja kĂ”rvaldab liigsed ressursimahukad toimingud, nagu kĂ”igi pack-failide ĂŒhendamine (vajadusel toimub ĂŒhendamine osade kaupa ja ilma kustutamata kaugeid objekte).
- Objektide andmebaas (ODB) ja sellega seotud API-d on viidud uuele arhitektuurile, mis pÔhineb pluginaikuste kasutamisel. Tehtud restruktureerimine abstraktsioonib objektide salvestamisformaat ja edaspidi vÔimaldab selliste funktsioonide rakendamist nagu alternatiivsed tagaaised ja objekti vormingud, nÀiteks suurte binaarfailide efektiivsemaks salvestamiseks vÔi suurte git-hostingute töö optimeerimiseks.
- Meeskonna «git repo structure» kĂ€sk, mis toob vĂ€lja repository struktuuri, kuvab mitte ainult kogu suurust, vaid ka suurimate objektide nĂ€itamist iga tĂŒĂŒbi jĂ€rgi, mis vĂ”imaldab hindamisel suuruseta kolmandate osapoolte utiliiti git-sizer. $ git repo structure ⊠| * Suurimad objektid | | * Committid | | * Maksimaalne suurus [1] | 17.23 KiB | | * Maksimaalsed vanemad [2] | 10 | | * Puud | | * Maksimaalne suurus [3] | 58.85 KiB | | * Maksimaalsed kirjeldused [4] | 1.18 k | | * Blobid | | * Maksimaalne suurus [5] | 1019.51 KiB | | * Silte | | * Maksimaalne suurus [6] | 7.13 KiB |
- Meeskonna «git replay» kĂ€sk, mida kasutatakse «git rebase» asemel ajaloo taastamiseks, serveril tööruumi puudumisel on vaikimisi lubatud atomaarne linkide uuendamine (kuna kĂ€su update-ref loend ei vĂ€ljastata kĂ€sitsi tĂ€itmiseks), rakendatakse suvandit «ârevert» muudatuste tĂŒhistamiseks mitmest commitist, tagastatakse tĂŒhistatud commitid ja vĂ”imaldatakse ajaloo taastamine kuni juurcommiti.
- KĂ€sku «git rev-list» ja sarnastesse kĂ€skudesse on lisatud suvand «âmaximal-only», et nĂ€idata ainult commite, mis ei ole kergesti saavutatavad teiste commitide poolt.
- KĂ€sku «git repo info» on lisatud valik «âkeys», et kuvada kĂ”ik teadaolevad vĂ”tmed.
- KĂ€sk «git add -p» vĂ”imaldab navigeerides koodiplokkide vahel klahvidega «J» ja «K» mĂ€rgistada juba heakskiidetud ja vahelejĂ€etud plokke. Lisatud on valik «âno-auto-advance», et vĂ€lja lĂŒlitada automaatne liikumine jĂ€rgmisele failile, et saaks tagasi minna eelnevatesse failidesse enne commit'i.
- Optimeeritud on web-liidese «gitweb» töökindlus mobiilseadmetes.
- KĂ€sku «git apply âdirectory» kasutamisel tagatakse failiteede normaliseerimine, nĂ€iteks «./un/../normalized/path».
- Dokumenteeritud on vÔimalus lisada enda allkomande, paigutades failid «git-» teegi kÀivitavate failide katalooge.
- KÀsku «git send-email» on lisatud tugi klienditserifikaatidele.
- KÀsku «git status» on teostatud seadistamine «status.compareBranches», mille kaudu saab mÀÀrata harud, millega vÔrreldakse praegust haru. [status] compareBranches = @{upstream} @{push}
- KĂ€sku «git rebase» on lisatud valik «âtrailer», et hĂ”lbustada metainformatsiooni lisamist kĂ”ikidele commit'idele. git rebase âtrailer «Reviewed-by: Test »
- Komandasse «git fast-import» on lisatud vÔimalus asendada allkirjad commit'ides, mis on pÀrast importimist muutunud kehtetuks.
- Lisatud tugi multi-pack-indeksite MIDX pakkimisele (compaction), kus omavahel ĂŒhendatakse vĂ€iksemad MIDX-indeksi kihtide teave objektide kĂ€ttesaadavuse ja seotud bitmap-failide kohta, mis vĂ€hendab pikaajalistes repode kogunenud kihtide arvu.
- Komandasse «git backfill» on rakendatud vĂ”imalus mÀÀrata revisjonid (commit'ide vahemikud) ja teepĂ€ised (pathspec) ajaloo muudatuste piiramiseks. git backfill main~100..main git backfill â â*.câ
- Lisatud alternatiivsed vormid kĂ€su «git config list» kutsumiseks â «git config -l» ja «git config âlist».
- Lubatud on kasutada mitte-ASCII mÀrke kÀsude aliaste nimedes, mis on mÀÀratud konfiguratsioonifailis. [alias «fetch»] command = fetch
- Muudetud on GPG-vĂ”tmete kehtivusaja lĂ”ppemisega seonduvate allkirjade kuvamine, mis olid Ă”iged commit'i allkirjastamisel. NĂŒĂŒd kuvatakse sellised allkirjad korrektsetena, mĂ€rkides vĂ”tme aegumise (varem esitati nad punasena, andes mulje, et nad on vale).
- HTTP-protokolli kaudu ligipÀÀsu korral on lisatud 429 (Liigne nĂ”udlus) veakĂ€sitlus. Taoliste vigadega lĂ”ppenud pĂ€ringud kĂ€sitletakse nĂŒĂŒd mitte kui fataalne probleem, vaid kui ajutine viga, mille puhul tuleks mĂ”ne aja pĂ€rast operatsiooni korrata. Kordamise viivitus seadistatakse valiku âhttp.retryAfterâ kaudu, korduste arv â âhttp.maxRetriesâ, ooteaeg â âhttp.maxRetryTimeâ.
Allikas: opennet.ru
