După trei luni de dezvoltare, a fost lansată versiunea sistemului distribuit de control al versiunilor Git 2.32. Git este unul dintre cele mai populare, fiabile și performante sisteme de gestionare a versiunilor, oferind instrumente flexibile pentru dezvoltarea neliniară, bazate pe ramificare și îmbinare a ramurilor. Pentru a asigura integritatea istoricului și rezistența la modificările retroactive, se utilizează o hashare implicită a întregii istorii anterioare în fiecare commit, iar verificarea digitală a semnăturilor dezvoltatorilor este posibilă pentru anumite taguri și commituri.
Comparativ cu versiunea anterioară, noua versiune include 617 modificări, realizate cu participarea a 100 de dezvoltatori, dintre care 35 au participat pentru prima dată la dezvoltare. Inovațiile principale sunt:
- Echipei „git commit” i s-a adăugat opțiunea „—trailer [=]”, care simplifică atașarea la commit a propriilor informații structurate (trailer) în format cheie/valoare, care pot fi apoi procesate de comanda „interpret-trailers”.
- În locul mecanismului GIT_CONFIG_NOSYSTEM, utilizat pentru a preveni citirea din fișierul de configurare comun pentru întreaga sistem, s-a propus utilizarea mecanismului GIT_CONFIG_SYSTEM, care permite specificarea explicită din care fișier ar trebui să fie încărcate setările sistemului. De asemenea, este disponibil parametrul GIT_CONFIG_GLOBAL pentru a suprascrie setările legate de utilizatori în $HOME/.gitconfig. Atribuirea unei valori nule variabilei GIT_CONFIG_SYSTEM schimbă comportamentul la echivalentul GIT_CONFIG_NOSYSTEM.
- Utilizând a doua versiune a protocolului de comunicație Git, la executarea comenzii „git push” s-a implementat determinarea antecesorului comun pe partea receptorului, ceea ce a permis îmbunătățirea eficienței lucrului „git push” la nivelul de eficiență al „git fetch” și excluderea descărcării obiectelor inutile.
- A fost adăugat un IPC simplu, care permite crearea de servicii, cum ar fi fsmonitor.
- Prelucrarea fișierelor „.gitattributes”, „.gitignore” și „.mailmap” a fost oprită dacă acestea sunt linkuri simbolice.
- Pentru transportul HTTP, a fost adăugată suport pentru cache-ul parolei utilizate cu succes pentru deblocarea certificatului.
- În comanda „git stash show” a fost implementată posibilitatea de a afișa partea ne urmărită a stocării fișierelor temporar eliminate.
- A fost propusă o strategie avansată de reambalare a repository-ului de către echipa „git repack”, care reduce consumul de resurse în cadrul reambalării.
- Comanda „git commit” a implementat o variantă extinsă a opțiunii „—fixup” (crearea unui commit pentru „rebase —autosquash”) — „—fixup=(reword|amend):”, oferind posibilitatea de a modifica doar mesajul din jurnal sau atât mesajul, cât și conținutul.
- În comanda „git send-email” s-a avut în vedere setarea opțiunii core.hooksPath.
- În „git format-patch -v” s-a permis utilizarea contoarelor care nu sunt numere întregi.
- În „git clone” a fost adăugată opțiunea „—reject-shallow”, care interzice clonarea din repository-uri în modul shallow (fără întreaga istorie a schimbărilor).
- În programul „gitweb” a fost adăugat un mod de ascundere a email-urilor, înlocuind liniile asemănătoare cu email-uri la afișare.
- Logica de procesare a comenzii „git apply —3way” a fost modificată, acum încercând mai întâi algoritmul de îmbinare în trei părți și, doar în cazul unui eșec sau al unui conflict, revenind la aplicarea obișnuită a patch-ului (anterior era invers).
- În comanda „git apply” s-a permis specificarea simultană a opțiunilor „—3way” și „—cached”.
- În Userdiff au fost adăugate șabloane pentru limbajul „Scheme”.
- În comanda „git log” a fost adăugată opțiunea „—diff-merges=” și setarea log.diffMerges pentru a alege modul implicit.
- În comenzile „git add” și „git rm” a fost adăugată o protecție suplimentară împotriva modificării datelor în căile situate în afara domeniului operației de clonare parțială (sparse checkout).
- În comanda „git rev-list” a fost adăugată opțiunea „—filter=object:type=” pentru a exclude un anumit tip de obiecte din fișierul pack generat de comanda pack-objects.
- În „git pack-objects” s-a interzis specificarea valorilor negative în opțiunile care acceptă valori numerice, cum ar fi „—window” și „—depth”.
Sursa: opennet.ro
