Lansarea versiunii 2.36 a sistemului de gestionare a codului sursă Git

După trei luni de dezvoltare, a fost lansată versiunea sistemului de gestionare distribuită a codului sursă Git 2.36. Git este unul dintre cele mai populare, fiabile și performante sisteme de gestionare a versiunilor, oferind instrumente flexibile pentru dezvoltare neliniară, bazate pe ramificare și unire de ramuri. Pentru a asigura integritatea istoriei și rezistența la modificări 'retroactive', se utilizează hashing-ul implicit al întregii istorii anterioare în fiecare commit, iar autentificarea prin semnături digitale a dezvoltatorilor pentru etichete și commituri este de asemenea posibilă.

Comparativ cu versiunea anterioară, noua versiune include 717 modificări, pregătite cu participarea a 96 de dezvoltatori, dintre care 26 au participat pentru prima dată la dezvoltare. Principalele noutăți sunt:

  • În comenzile 'git log' și 'git show' a fost adăugată opțiunea '--remerge-diff', care permite afișarea diferențelor dintre rezultatul comun al unirii și datele reale reflectate în commit după executarea comenzilor 'merge', ceea ce permite evaluarea vizuală a modificărilor efectuate în urma rezolvării conflictelor la unire. Comanda obișnuită 'git show' împarte diferitele soluții pentru conflicte prin indentare, ceea ce face greu de înțeles modificările. De exemplu, în captura de ecran de mai jos, liniile '+/-' fără indentare arată ultima soluție a conflictului legată de redenumirea în prima ramură sha1 pe oid în comentariul respectiv, iar '+/-' cu indentare arată soluția inițială a conflictului provocată de apariția unui argument suplimentar în ramura a doua în funcția dwim_ref().
    Lansarea versiunii 2.36 a sistemului de gestionare a codului sursă Git

    Atunci când se utilizează opțiunea '--remerge-diff', diferențele între soluțiile conflictelor nu sunt separate pentru fiecare ramură părinte, ci se arată diferențele generale între fișierul cu conflicte de unire și fișierul în care conflictele sunt rezolvate.

    Lansarea versiunii 2.36 a sistemului de gestionare a codului sursă Git
  • A crescut flexibilitatea configurării comportamentului de resetare a cache-urilor de disc prin apelul funcției fsync(). Parametrul core.fsyncObjectFiles disponibil anterior a fost împărțit în două variabile de configurare core.fsync și core.fsyncMethod, care oferă posibilitatea de a aplica fsync nu doar fișierelor cu obiecte (.git/objects), ci și altor structuri git, cum ar fi referințele (.git/refs), reflog și fișierele de pachet.

    Prin variabila core.fsync se poate specifica o listă de structuri interne Git pentru care, după operația de scriere, va fi apelat suplimentar fsync. Variabila core.fsyncMethod permite alegerea metodei pentru golirea cache-ului; de exemplu, se poate alege fsync pentru a aplica apelul de sistem cu același nume sau se poate specifica writeout-only pentru a aplica scrierea întârziată (scrierea în cache-ul paginilor).

  • Pentru a proteja împotriva vulnerabilităților care manipulează înlocuirea altor utilizatori ai directoarelor .git în partițiile partajate, verificarea proprietarului depozitului a fost întărită. Executarea oricăror comenzi git este acum permisă doar în propriile directoare „.git”. Dacă directorul cu depozitul aparține altui utilizator, va fi generată o eroare implicit. Comportamentul specificat poate fi dezactivat prin configurarea safe.directory.
  • Comenzii „git cat-file”, destinată pentru a afișa conținutul sursă al obiectelor Git, i s-a adăugat opțiunea „—batch-command”, care completează comenzile disponibile anterior „—batch” și „—batch-check” cu capacitatea de a alege în mod adaptativ tipul de ieșire prin specificarea „contents ” pentru a afișa conținutul sau „info ” pentru a oferi informații despre obiect. De asemenea, este acceptată comanda „flush” pentru a goli bufferul de ieșire.
  • Comenzii „git ls-tree”, care are rolul de a genera o listă a conținutului arborescent al obiectelor, i s-a adăugat opțiunea „—oid-only” („—object-only”), similar cu „—name-only”, care afișează doar identificatorii obiectelor pentru a simplifica apelurile din scripturi. De asemenea, a fost implementată opțiunea „—format”, care permite definirea unui format personalizat de ieșire, combinând informațiile despre mod, tip, nume și dimensiune.
  • În comanda „git bisect run” s-a implementat determinarea neafisării semnului pentru script ca fișier executabil și generarea, în acest caz, a erorilor cu codurile 126 sau 127 (anterior, dacă scriptul nu putea fi rulat, toate reviziile erau marcate ca având probleme).
  • Comenzii „git fetch” i s-a adăugat opțiunea „—refetch” pentru a extrage toate obiectele fără a informa cealaltă parte despre conținutul deja existent în sistemul local. Un astfel de comportament poate fi util pentru restabilirea stării după defecțiuni, atunci când nu există certitudinea integrității datelor locale.
  • Comenzile „git update-index”, „git checkout-index”, „git read-tree” și „git clean” au fost îmbunătățite cu suport pentru indexuri parțiale (sparse index), ceea ce permite creșterea performanței și economisirea de spațiu în repozitoarele unde se efectuează operațiuni de clonare parțială (sparse-checkout).
  • Comportamentul comenzii „git clone —filter=… —recurse-submodules” a fost modificat, acum ducând la clonarea parțială a submodulelor (anterior, pentru astfel de comenzi, filtrul se aplica doar conținutului principal, iar submodulele erau clonate complet, fără a lua în considerare filtrul).
  • Comanda „git bundle” a fost îmbunătățită cu suport pentru specificarea filtrului pentru a permite selectarea conținutului similar cu operațiunile de clonare parțială.
  • Comanda „git branch” a fost extinsă cu opțiunea „—recurse-submodules” pentru a permite parcurgerea recursivă a submodulelor.
  • Un nou manipulator pentru limbajul Kotlin a fost propus în userdiff.

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