Git 2.54

Git 2.54

Prezentat lansarea unui sistem distribuit de gestionare a codului sursă Git 2.54. Git se distinge prin performanța sa ridicată și oferă instrumente pentru dezvoltarea non-liniară, bazate pe ramificare și îmbinare a branch-urilor. Pentru a asigura integritatea istoriei și rezistența la modificările "retroactive", se utilizează hashing-ul implicit al întregii istorii anterioare în fiecare commit, precum și certificarea prin semnături digitale a dezvoltatorilor pentru anumite taguri și commituri. Codul Git se răspândește sub licența GPLv2+.

Comparativ cu versiunea anterioară, noua versiune include 770 de modificări, pregătite cu participarea a 137 de dezvoltatori (66 dintre aceștia participând pentru prima dată la dezvoltarea Git).

Principalele noutăți:

  • A fost implementată comanda "git history", care oferă funcționalități experimentale pentru rescrierea istoricului modificărilor, mai simple și sigur de utilizat decât rebasarea commit-urilor cu comanda git rebase. Sunt oferite două operații:

    • git history reword pentru a rescrie mesajul în commitul specificat fără a modifica arborele de lucru și indexul (cu excepția notei, restul rămâne neatins). De exemplu, pentru a corecta o greșeală de tipar.
    • git history split pentru a împărți interactiv commitul specificat în două commituri diferite, mutând părțile selectate din commitul sursă în commitul suplimentar.

    În versiunile viitoare se așteaptă adăugarea de comenzi suplimentare: git history fixup pentru corectarea commitului, git history drop pentru ștergerea commitului, git history reorder pentru schimbarea ordinii commiturilor și git history squash pentru combinarea commiturilor.

  • A fost implementată o nouă metodă de definire a handler-elor (hook) în fișierele de configurare. În loc să plaseze scripturi cu handler-e în directorul .git/hooks din fiecare repository, comenzile pentru apelarea handler-elor pot fi acum definite direct în fișierele de configurare. Setările pot fi legate de repository sau specificate în fișierele de configurare care acționează pentru toate repository-urile (/etc/gitconfig) sau pentru repository-urile utilizatorului (~/.gitconfig). Este posibil să se lege mai multe handler-e la un singur eveniment. Scripturile din .git/hooks continuă să fie apelate, dar sunt executate după handler-ele din fișierele de configurare. Pentru a vizualiza lista de handler-e, trebuie utilizată comanda git hook list, iar pentru a dezactiva selectiv apelurile handler-elor, se folosește setarea 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

  • În echipa „git maintenance” este activată implicit strategia geometrică (git config set maintenance.strategy geometric), care permite reducerea timpului de întreținere a marilor monorepozitorii. Spre deosebire de strategia anterioară, care folosea logica din comanda git gc, noua strategie evită reprocesarea tuturor obiectelor și exclude operațiunile consumatoare de resurse, precum îmbinarea tuturor fișierelor pack (îmbinarea se face pe părți, fără curățarea obiectelor șterse, ori de câte ori este posibil).
  • Baza de date a obiectelor (ODB) și API-urile asociate au fost migrate către o nouă arhitectură, bazată pe utilizarea backendurilor plug-in. Restructurarea efectuată abstrează formatul de stocare al obiectelor și va permite în continuare implementarea unor funcționalități, cum ar fi backenduri alternative și formate de obiecte, de exemplu, pentru stocarea mai eficientă a fișierelor binare mari sau pentru optimizarea performanței marilor git-hostinguri.
  • În echipa „git repo structure”, ce afișează informații despre structura repository-ului, oferind vizualizarea nu doar a dimensiunii totale, ci și a celor mai mari obiecte din fiecare tip, ceea ce permite estimarea dimensiunii fără a necesita utilizarea unor utilitare externe. git-sizer.

$ git repo structure … | * Cele mai mari obiecte | | | * Commits | | | * Dimensiune maximă [1] | 17.23 KiB | | * Părinți maxim [2] | 10 | | * Trees | | | * Dimensiune maximă [3] | 58.85 KiB | | * Intrări maxime [4] | 1.18 k | | * Blobs | | | * Dimensiune maximă [5] | 1019.51 KiB | | * Tags | | | * Dimensiune maximă [6] | 7.13 KiB |

  • În echipa „git replay”, folosită în loc de git rebase pentru a recrea istoria pe server fără un arbore de lucru, include în mod implicit actualizarea atomică a referințelor (în loc de a afișa lista de comenzi update-ref pentru executare manuală), a fost implementată opțiunea —revert pentru anularea modificărilor dintr-o serie de commituri, s-a realizat eliminarea commiturilor rezultante goale, iar acum este posibilă recrearea istoricului până la commitul rădăcină.
  • În „git rev-list” și comenzi similare a fost adăugată opțiunea —maximal-only pentru a afișa doar commituri care nu sunt accesibile prin alte commituri.
  • În comanda „git repo info” a fost adăugată opțiunea —keys pentru a afișa o listă cu toate cheile cunoscute.
  • În echipa „git add -p» Navigarea între blocurile de cod folosind tastele „J” și „K” a fost echipată cu marcaj pentru blocurile deja aprobate și trecute cu vederea. A fost adăugată opțiunea —no-auto-advance pentru a dezactiva trecerea automată la următorul fișier, permițând revenirea la fișierele anterioare înainte de commit.
  • A fost realizată optimizarea interfeței web „gitweb” pentru utilizarea de pe dispozitive mobile.
  • În echipa „git apply –directory» a fost asigurată normalizarea căilor fișierelor, cum ar fi .\/un\/..\/normalized\/path, înainte de utilizare.
  • A fost documentată posibilitatea adăugării de subcomenzi proprii prin plasarea fișierelor git- în directorul fișierelor executabile.
  • În comanda „git send-email» a fost adăugată suportul pentru certificatele client.
  • Pentru comanda „git status” a fost implementată setarea status.compareBranches, prin care se pot specifica ramurile cu care se va realiza comparația ramurii curente:

[status] compareBranches = @{upstream} @{push}

  • În „git rebase» a fost adăugată opțiunea —trailer pentru simplificarea adăugării de metadate la toate commit-urile:

git rebase —trailer "Reviewed-by: Test "`

  • În comanda „git fast-import» a fost adăugată posibilitatea de a înlocui semnăturile pentru commit-uri care au devenit invalide după import.
  • A fost adăugat suport pentru comprimarea păgubită (compaction) a indexurilor MIDX (multi-pack index), în care straturile mici de index MIDX ce conțin informații despre disponibilitatea obiectelor și fișierele bitmap aferente sunt combinate pentru a reduce numărul straturilor acumulate în repositoare vechi.
  • În comanda git backfill a fost implementată capacitatea de a specifica revizii (range de commit-uri) și măști de căi (pathspec) pentru a restricționa părțile de istorie a modificărilor care sunt descărcate:

git backfill main~100..main git backfill — ‘*.c’

  • A fost adăugată o formă alternativă de apel pentru comanda git config list – git config -l și git config —list.
  • A fost permisă utilizarea caracterelor non-ASCII în numele aliasurilor de comenzi, definite în fișierul de configurare:

[alias "obține"] command = fetch

  • Modificarea modului de afișare a semnăturilor a căror dată de expirare a cheii GPG a trecut, dar care au fost valide la momentul semnării commitului. Semnăturile de acest tip sunt acum afișate ca fiind corecte, cu o notă de expirare a cheii (anterior erau evidențiate cu roșu, ceea ce crea impresia că sunt incorecte).
  • Pentru accesarea repositoarelor prin HTTP, a fost asigurată gestionarea erorii cu codul 429 (Too Many Requests). Cererile care se finalizează cu o astfel de eroare sunt acum considerate o problemă temporară, și nu o problemă fatală, pentru care operațiunea ar trebui repetată după un timp. Întârzierea înainte de repetare este setată prin opțiunea http.retryAfter, numărul de repeți – http.maxRetries, timpul de așteptare – http.maxRetryTime.

Sursa: linux.org.ru

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster