Esitletud jaotatud lähtekoodihalduse süsteemi väljaanne Git 2.54. Git pakub kõrget jõudlust ning võimaldab mittelineaarset arendust, tuginedes harude ja sulandumiste kasutamisele. Ajaloo terviklikkuse tagamiseks ja tagasivõtmise muudatuste vastu kaitsmiseks kasutatakse iga commit'i puhul kogu varasema ajaloo varjatud räsi ja arendajate digitaalset allkirja eraldi siltide ja commit'ide osas. Git'i kood GNU Üldine Avaliku litsentsi alusel. on litsentseeritud GPLv2+ all.
Uues versioonis on võrreldes eelmise väljaandega vastu võetud 770 muudatust, nagu on aidanud välja töötada 137 arendajat (66 neist osaleb Git'i arendamises esmakordselt).
-
On rakendatud käsku „git history”, mis pakub katsetamise võimalusi muudatuste ajaloo ümberkirjutamiseks, olles lihtsam ja ohutum kasutada kui commit'ide ümbervahetaminegit rebase käsk. Pakutakse kahte operatsiooni:
- git history reword <commit>, mis võimaldab kommentaari ümberkirjutamist määratud commit'is, muutmata samas tööpuud ja indeksit (välja arvatud märkused, kõik muu jääb puutumata). Näiteks trükivea parandamiseks.
- git history split interaktiivseks jagamiseks määratud commit'ist kaheks erinevaks commit'iks, mille käigus valitud osad liiguvad algsest commit'ist uude commit'i.
Tulevastes väljaannetes on plaanis lisada uusi käske: git history fixup commit'i parandamiseks, git history drop commit'i eemaldamiseks, git history reorder commit'ite järjestuse muutmiseks ja git history squash commit'ite ühendamiseks.
-
On rakendatud uus meetod töötlejate määratlemiseks (hook) konfiguratsioonifailides. Selle asemel, et paigutada töötlusmaterjalide skripte katalooge .git/hooks iga repositooriumi sisse, saab nüüd töötlusmaterjalide kutsumiseks käske määrata otse konfiguratsioonifailides. Seadeid saab siduda repositooriumiga või määrata konfiguratsioonifailides, mis kehtivad kõigi repositooriumide ( /etc/gitconfig ) või kasutaja repositooriumide (~/.gitconfig) jaoks. Ühe sündmusega võib siduda mitu töötlusmaterjali. .git/hooks skriptid jätkavad töötamist, kuid neid käivitavad pärast konfiguratsioonifaile olevate töötlusmaterjalide skripte. Töötlemismaterjalide nimekiri on nähtav käsuga git hook list, valikulise töötlusmaterjali kutsumise keelamiseks tuleb kasutada seadistust 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
- Käsus «git maintenance» vaikimisi on kasutusel geometric strateegia (git config set maintenance.strategy geometric), mis lühendab suurte monorepositori hooldusaega. Uus strateegia, võrreldes varasema, mis kasutas git gc meeskonna loogikat, väldib kõigi objektide uuesti pakkimist ja välistab üleliigsed ressursimahukad toimingud, nagu kõikide pack-failide ühendamine (kui võimalik, toimub ühendamine osade kaupa ja ilma eemaldatud objektide puhastamiseta).
- Objektide andmebaas (ODB) ja sellega seotud API-d on viidud üle uuele arhitektuurile, mis põhineb lisatavatele tagapooltele. Tehtud restruktureerimine abstraktsioonib objekti salvestusformaat, võimaldades tulevikus ellu viia selliseid võimalusi nagu alternatiivsed tagapooled ja objekti formaadid, näiteks suurte binaarfailide efektiivsemaks salvestamiseks või suurte git-hostingute töö optimeerimiseks.
- Käsus «git repo struktuurEsitatakse teavet hoidla struktuuri kohta, kus on näidatud mitte ainult kogusuurus, vaid ka igat tüüpi suurimate objektide kuvamine, mis võimaldab suuruse hindamisel ilma kolmanda osapoole tööriista kasutamiseta. git-sizer.
$ git repo structure … | * Suurimad objektid | | | * Commit'id | | | * Maksimaalne suurus [1] | 17.23 KiB | | * Maksimaalsed vanemad [2] | 10 | | * Failipuud | | | * Maksimaalne suurus [3] | 58.85 KiB | | * Maksimaalsed sisenemised [4] | 1.18 k | | * Blob'id | | | * Maksimaalne suurus [5] | 1019.51 KiB | | * Sildid | | | * Maksimaalne suurus [6] | 7.13 KiB |
- Käsus «git replayKasutatav git rebase'i asemel, et luua ajalugu serveris ilma tööpuuta, on vaikimisi включено aatomaarne linkide uuendamine (selle asemel, et väljastada käsu update-ref loend käsitsi täitmiseks), rakendatud on valik —revert, et tühistada muudatused mitmest commit'ist, eemaldatakse tulemuseks olevad tühjad commit'id ja on uus võimalus ajaloos tagasi minna kuni juurikommit'ini.
- «git rev-list» ja sarnased käsud on lisatud valik —maximal-only, et näidata ainult commit'e, mis ei ole teiste commit'idega saavutatavad.
- Käsku «git repo info» lisatud on -keys valik, et näidata kõigi tuntud võtmete nimekirja.
- Käsus «git add -p» koodiblokkide vahel navigeerimisel klahvidega «J» ja «K» on märgistatud juba heaks kiidetud ja vahele jäetud blokid. Lisatud on -no-auto-advance valik automaatse järgmisse faili ülemineku keelamiseks, et enne commit'i saaksite naasta varasematele failidele.
- Optimeeritud on veebiliidest «gitweb» mobiilseadmete jaoks.
- Käsus «git apply –directory» enne kasutamist tagatakse failiteede normaliseerimine, nagu ./un/../normalized/path.
- Dokumenteeritud on võimalus lisada oma alamkäsklusi, paigutades git-<cmd> failid käivitatavate failide katalooge.
- Käsku «git send-email» lisatud on kliendisertifikaatide tugi.
- Käsklusele «git status» on välja töötatud seadistamine status.compareBranches, mille kaudu saab määrata harud, millega võrreldakse praegust haru:
[status] compareBranches = @{upstream} @{push}
- «git rebase» lisatud on -trailer valik, et hõlbustada metaandmete lisamist kõikidele committidele:
git rebase —trailer "Reviewed-by: Test <test@example.com>"`
- Käsku «git fast-import» lisatud valik kommitite märkuste asendamiseks, mis on importimise järel kehtetuks muutunud.
- Lisatud tugi mitme paketi indeksi MIDX (multi-pack index) kokkupanekuks, mille käigus ühendatakse väiksed MIDX-indeksi kihid objektide kättesaadavuse teabega ning nendega seotud bitmap-failid, mis vähendab pikaajalistes hoidlates kogunenud kihtide arvu.
- Git backfill meeskonnas on lisatud võimalus määrata revisjone (kommitite vahemikke) ja teepõhja maske (pathspec) muudatuste ajaloo piiramiseks:
git backfill main~100..main git backfill — ‘*.c’
- Lisatud alternatiivsed kutsevormid git config list käsu jaoks – git config -l ja git config —list.
- Lubatud on mitte-ASCII sümbolite kasutamine käs aliaste nimedes, mis on määratud konfiguratsioonifailis:
[alias "get"] 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-repositorite käsitlemisel on nüüd 429 (Liigne päring) koodiga veakäitlemine sisse lülitatud. Sellise veaga lõppenud päringud käsitletakse nüüd mitte kui kriitiline probleem, vaid ajutine tõrge, mille puhul tuleb mõne aja pärast toimingut uuesti katsetada. Taasmise viivitus määratakse valiku http.retryAfter kaudu, korduste arv – http.maxRetries ja ooteaeg – http.maxRetryTime.
Allikas: linux.org.ru
