Esitletud jaotatud allika haldamise sĂŒsteemi vĂ€ljaanne Git 2.54. Git on tuntud oma kĂ”rge jĂ”udluse poolest ning pakub mittelineaarse arenduse tööriistu, mis pĂ”hinevad harude ja ĂŒhenduste loomisel. Ajaloo terviklikkuse ja tagasivaatavate muudatuste vastupidavuse tagamiseks kasutatakse igas commit'is kogu eelneva ajaloo varjatud hash-koodimist, samuti arendajate digiallkirjade kasutamist eraldi siltide ja commit'ide autentimiseks. Git'i kood levitatakse GPLv2+ litsentsi alusel.
Uues versioonis on vÔrreldes varasema vÀljaande 770 muudatust, mille on valmistanud 137 arendajat (66 neist osalesid Git'i arenduses esmakordselt).
-
On rakendatud kĂ€sk «git history», mis pakub katsetusi muudatuste ajaloo ĂŒmberkirjutamiseks, olles lihtsam ja turvalisem kui commit'ide edasi liikumine git rebase kĂ€suga. Pakutakse kahte operatsiooni:
- git history reword mÀÀratleb mÀÀratud commit'i sĂ”numi ĂŒmberkirjutamise ilma tööruumi ja indeksi muutmiseta (vĂ€lja arvatud mĂ€rkus, kĂ”ik muu jÀÀb puutumatuks). NĂ€iteks trĂŒkivea parandamiseks.
- git history split vÔimaldab interaktiivselt jagada mÀÀratud commit'i kaheks erinevaks commit'iks, viies valitud osad algsest commit'ist tÀiendavasse commit'isse.
Tulevastes vĂ€ljaannetes on oodata 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 töötlijate mÀÀratlemiseks (hook) konfiguratsioonifailides on rakendatud. Selle asemel, et paigutada töötlijate skripte katalooge .git/hooks igas hoidlas, saab töötlijatele helistamiseks mÀÀrata kĂ€skusid otse konfiguratsioonifailides. Seadeid saab siduda hoidla vĂ”i mÀÀrata konfiguratsioonifailides, mis kehtivad kĂ”ikidele hoidlatele (/etc/gitconfig) vĂ”i kasutaja hoidlatele (~/.gitconfig). Ăhe sĂŒndmuse jaoks on vĂ”imalik siduda mitu töötlijat. Skriptid .git/hooks ka kutsutakse ikka, kuid neid kĂ€ivitatakse pĂ€rast konfiguratsioonifailides olevate töötlijate töötlemist. Töötlijate loendi vaatamiseks tuleks kasutada kĂ€sku git hook list, ning valikulise helistamise katkestamiseks 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Ă€skgit maintenanceon vaikimisi kasutusel strateegia geometric (git config set maintenance.strategy geometric), mis vĂ”imaldab vĂ€hendada suure monorepo hooldamise aega. VĂ”rreldes varasema strateegiaga, mis kasutas git gc kĂ€skude loogikat, vĂ€ltib uus strateegia kĂ”igi objektide uuesti pakkimist ja vĂ€listab liiga ressursimahukad operatsioonid, nagu kĂ”igi pack-failide ĂŒhendamine (kui vĂ”imalik, toimub ĂŒhendamine osadeks ja ilma kustutamata eemalduvaid objekte).
- Objektide andmebaas (ODB) ja sellega seotud API-d on muudetud uuele arhitektuurile, mis pĂ”hineb pluginate kasutamisel. Tehtud ĂŒmberstruktureerimine abstraheerib objektide salvestamise formaadi ja vĂ”imaldab hiljem rakendada selliseid omadusi nagu alternatiivsed tagasilöögid ja objekti formaadid, nĂ€iteks suurte binaarfailide tĂ”husama salvestamise vĂ”i suurte git-hostingute töö optimeerimise jaoks.
- KĂ€skgit repo structure», mis vĂ€ljastab teavet reposti struktuuri kohta, tagab, et kuvatakse mitte ainult kogu suurus, vaid ka iga tĂŒĂŒbi suurima objekti kuvamine, mis vĂ”imaldab hindamisel vĂ€listada kolmandate osapoolte utiliidid. git-sizer.
$ git repo structure ⊠| * Suurimad objektid | | | * Kommid | | | * Maksimaalne suurus [1] | 17.23 KiB | | * Maksimaalsed vanemad [2] | 10 | | * Puud | | | * Maksimaalne suurus [3] | 58.85 KiB | | * Maksimaalsed kirjed [4] | 1.18 k | | * Blobid | | | * Maksimaalne suurus [5] | 1019.51 KiB | | * Sildid | | | * Maksimaalne suurus [6] | 7.13 KiB |
- KĂ€skgit replay», mida kasutatakse git rebase'i asemel, et taastada ajalugu serveris ilma töökaustata, on vaikimisi sisse lĂŒlitatud aatomiline linkide vĂ€rskendamine (kui mitte, siis edastatakse update-ref kĂ€skude loetelu kĂ€sitsi tĂ€itmiseks), on vĂ€lja töötatud -revert valik seeria committide muudatuste tĂŒhistamiseks, tagatakse tulemuslike tĂŒhipostide viskamine ja loodud on vĂ”imalus ajalugu taastada kuni juurcommiti.
- KÀskgit rev-list» ja sarnased kÀsud said -maximal-only valiku, et nÀidata ainult kommitte, mis ei ole teiste commitidega kergesti kÀtte saadavad.
- KÀskugit repo info» on lisatud -keys valik, et kuvada kÔigi tuntud vÔtmete loend.
- KĂ€skgit add -p» koodiblokkide vahel navigeerimisel klahvidega «J» ja «K» on tagatud juba heakskiidetud ja vahelejĂ€tmise mĂ€rkide tegemine. Lisa valik âno-auto-advance automaatse jĂ€rgmise faili avamise keelamiseks, et saaksid enne commit'i tagasi vaadata varasematele failidele.
- Optimeeritud veebliidese «gitweb» tööks mobiilseadmetes.
- KĂ€skgit apply âdirectory» enne kasutamist on tagatud failiteede normaliseerimine, nagu .\/un\/..\/normalized\/path.
- Dokumenteeritud on vÔimalus lisada oma alakomandeid, paigutades failid git-<cmd> tÀidetavate failide katalooge.
- KÀskugit send-email» on lisatud tugi kliendisertifikaatidele.
- KÀsule «git status» on rakendatud sÀtte status.compareBranches, millega saab mÀÀrata harud, millega vÔrreldakse praegust haru:
[status] compareBranches = @{upstream} @{push}
- KĂ€skgit rebase» on lisatud valik âtrailer, et lihtsustada metaandmete lisamist kĂ”igile commit'idele:
git rebase âtrailer "Reviewed-by: Test <test@example.com>"`
- KÀskugit fast-import» on lisatud vÔimalus asendada commit'ide allkirju, mis muutusid kehtetuks pÀrast importimist.
- Lisatud on pakkimise (compaction) tugi mitme paketi indeksitele MIDX (multi-pack index), kus vÀiksed MIDX-indeksi tahvlid, millel on objektide kÀttesaadavuse teave ja seotud bitmap-failid, koondatakse kokku, et vÀhendada juba olemasolevates repo-des kogunenud tahvlite arvu.
- git backfill kÀsus on rakendatud vÔimalus mÀÀrata revisjone (commit'ide vahemikke) ja teepÀringute maske (pathspec) muutuste ajaloo laadimise piiramiseks:
git backfill main~100..main git backfill â â*.câ
- On lisatud alternatiivsed vormid kĂ€su git config list kutsumiseks â git config -l ja git config âlist.
- Lubatud on kasutada mitte-ASCII mÀrke kÀsusÔnade alias'ite nimedes, mida mÀÀratakse konfiguratsioonifailis:
[alias "fetch"] command = fetch
- Muudetud on allkirjade kuvamist, mille GPG-vĂ”tme kehtivusaeg on lĂ”ppenud, kuid mis olid kommi allkirjastamise ajal kehtivad. Taolised allkirjad kuvatakse nĂŒĂŒd Ă”igena koos vĂ”tme aegumise mĂ€rgiga (varem kuvati neid punasega, mis jĂ€ttis mulje, et need ei ole kehtivad).
- HTTP kaudu repo-dele pöördumisel on tagatud vea 429 (Too Many Requests) töötlemine. Selliste vigadega lĂ”ppenud pĂ€ringud loetakse nĂŒĂŒd mitte fataalseks probleemiks, vaid ajutiseks veaks, mille kordamiseks on soovitatav pĂ€rast teatud aega. Kordamise viivitus mÀÀratakse http.retryAfter valiku kaudu, korduste arv â http.maxRetries, ooteaeg â http.maxRetryTime.
Allikas: linux.org.ru
