Lansarea sistemului de gestionare a codului sursă Git 2.54

A fost lansată versiunea 2.54 a sistemului distribuit de gestionare a codului sursă Git. Git se distinge prin performanțe ridicate și oferă instrumente pentru dezvoltarea neliniară, bazate pe ramificare și fuziune. Pentru a asigura integritatea istoricului și rezistența la modificările „retroactive”, se utilizează hash-uri implicite ale întregului istoric anterior în fiecare commit, precum și certificarea prin semnături digitale a dezvoltatorilor pentru anumite etichete și commituri. Codul Git este distribuit sub licența GPLv2+.

Comparativ cu versiunea anterioară, noua versiune include 770 de modificări, realizate cu participarea a 137 de dezvoltatori (66 dintre ei au participat pentru prima dată la dezvoltarea Git). Principalele noutăți sunt:

  • A fost implementată comanda „git history”, care oferă funcționalități experimentale pentru rescrierea istoricului modificărilor, mai simple și mai sigure decât rebasarea commiturilor cu comanda „git rebase”. Sunt disponibile două operații:
    • „git history reword ” pentru a rescrie mesajul din commitul specificat fără a modifica arborele de lucru și indicele (în afară de notă, restul rămânete neschimbat). 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 original în commitul suplimentar.

    În viitoarele versiuni se așteaptă adăugarea unor comenzi suplimentare: „git history fixup” pentru a corecta un commit, „git history drop” pentru a șterge un commit, „git history reorder” pentru a modifica ordinea commiturilor și „git history squash” pentru a combina commiturile.

  • A fost implementată o nouă metodă de definire a handler-elor (hook) în fișierele de configurare. În loc să plasați scripturile cu handler-e în directorul „.git/hooks” din fiecare repository, comenzile pentru apelarea handler-elor pot fi acum specifice direct în fișierele de configurare. Setările pot fi legate de repository sau specificate în fișierele de configurare aplicabile tuturor repository-urilor (/etc/gitconfig) sau repository-urilor utilizatorului (~/.gitconfig). Este posibil să legați mai multe handler-e la un singur eveniment. Scripturile din „.git/hooks” vor continua să fie apelate, dar acestea se vor executa după handler-ele din fișierele de configurare. Pentru a vizualiza lista handler-elor, utilizați comanda „git hook list”, iar pentru a dezactiva selectiv apelarea handler-elor, folosiți 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 comanda „git maintenance”, strategia „geometric” este activată implicit („git config set maintenance.strategy geometric”), ceea ce permite reducerea timpului de întreținere pentru monorepository-urile mari. Comparativ cu strategia utilizată anterior, care folosea logica din comanda „git gc”, noua strategie evită reambalarea tuturor obiectelor și exclude operațiile care consumă resurse în mod excesiv, cum ar fi combinarea tuturor fișierelor pack (combinarea se face, dacă este posibil, pe părți și fără curățarea obiectelor șterse).
  • Baza de date a obiectelor (ODB) și API-urile asociate au fost migrate pe o nouă arhitectură bazată pe utilizarea backend-urilor plugabile. Restructurarea efectuată abstractizează formatul de stocare a obiectelor și va permite implementarea de funcționalități precum backend-uri alternative și formate de obiecte, de exemplu, pentru stocarea mai eficientă a fișierelor binare mari sau pentru optimizarea funcționării platformelor mari de găzduire Git.
  • În comanda „git repo structure”, care afișează informațiile despre structura repository-ului, se asigură afișarea nu doar a dimensiunii totale, ci și a celor mai mari obiecte de fiecare tip, ceea ce permite evaluarea dimensiunii fără a folosi un instrument extern git-sizer. $ git repo structure … | * Obiecte mari | | | * Commits | | | * Dimensiune maximă [1] | 17.23 KiB | | * Părinți maximi [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 comanda „git replay”, folosită în loc de „git rebase” pentru a recrea istoria pe server fără un arbore de lucru, este inclusă implicit actualizarea atomică a referințelor (în locul afișării listei de comenzi update-ref pentru execuție manuală), a fost implementată opțiunea „—revert” pentru a anula modificările dintr-o serie de comituri, s-a asigurat eliminarea comiturilor goale rezultate, iar acum există posibilitatea recreării istoriei până la comitul rădăcină.
  • În „git rev-list” și comenzi similare a fost adăugată opțiunea „—maximal-only” pentru a afișa doar comiturile inaccesibile prin alte comituri.
  • În comanda „git repo info” a fost adăugată opțiunea „—keys” pentru a afișa lista tuturor cheilor cunoscute.
  • În comanda „git add -p” la navigarea între blocurile de cod folosind tastele „J” și „K” s-a asigurat marcarea blocurilor deja aprobate și sărite. A fost adăugată opțiunea „—no-auto-advance” pentru a dezactiva trecerea automată la următorul fișier, astfel încât să se poată reveni la fișierele anterioare înainte de comitere.
  • A fost optimizat interfața web „gitweb” pentru a funcționa pe dispozitive mobile.
  • În comanda „git apply —directory” înainte de utilizare s-a asigurat normalizarea căilor de fișier, cum ar fi „.\/un\/..\/normalized\/path”.
  • A fost documentată posibilitatea adăugării de subcomenzi personalizate prin plasarea fișierelor „git-” în directorul cu fișiere 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 compara ramura curentă. [status] compareBranches = @{upstream} @{push}
  • În „git rebase” a fost adăugată opțiunea „—trailer” pentru a simplifica adăugarea de metadate la toate comiturile. git rebase —trailer „Reviewed-by: Test ”
  • Funcția de schimbare a semnăturilor pentru commituri, care au devenit invalide după import, a fost adăugată la comanda „git fast-import”.
  • S-a adăugat suport pentru compacția indecșilor multi-pachet MIDX (multi-pack index), prin care straturile mici ale indexului MIDX, cu informații despre disponibilitatea obiectelor și fișierele bitmap aferente, sunt combinate între ele, ceea ce permite reducerea numărului de straturi acumulate în repositoare care există de mult timp.
  • Comanda „git backfill” a fost implementată cu posibilitatea specificării reviziilor (domeniilor commiturilor) și a măștilor de căi (pathspec) pentru a restricționa părțile istoriei modificărilor care sunt încărcate. git backfill main~100..main git backfill — ‘*.c’
  • Au fost adăugate forme alternative de apelare a comenzii „git config list” — „git config -l” și „git config —list”.
  • Utilizarea caracterelor non-ASCII în numele aliasurilor pentru comenzi definite în fișierul de configurație este acum permisă. [alias „fetch”] 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).
  • Atunci când se accesează repositoare prin HTTP, a fost asigurată prelucrarea erorii cu codul 429 (Too Many Requests). Cererile care au generat o astfel de eroare sunt acum considerate nu ca o problemă fatală, ci ca o eroare temporară, pentru care operația ar trebui reluată după un timp. Întârzierea înainte de reluare este setată prin opțiunea „http.retryAfter”, numărul de repetări — „http.maxRetries”, timpul de așteptare — „http.maxRetryTime”.

Sursa: opennet.ro

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