Git 2.54

Git 2.54

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).

Peamised uuendused:

  • 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

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster