După trei luni de dezvoltare, a fost lansată versiunea distribuită a sistemului de gestionare a codului sursă Git 2.44. Git este unul dintre cele mai populare, fiabile și performante sisteme de gestionare a versiunilor, oferind instrumente flexibile de dezvoltare non-liniară, bazate pe ramificare și fuziune. Pentru a asigura integritatea istoriei și rezistența la modificările „retroactive”, se utilizează hashing-ul implicit al întregii istorii anterioare în fiecare commit, fiind posibilă și autentificarea digitală a semnăturilor dezvoltatorilor pentru anumite etichete și commit-uri. Codul Git este distribuit sub licența GPLv2+.
În comparație cu versiunea anterioară, noua versiune a primit 503 modificări, realizate cu contribuția a 85 de dezvoltatori, dintre care 34 au participat pentru prima oară. Noile caracteristici principale sunt:
- A fost adăugată o nouă comandă „git replay”, care poate fi utilizată ca alternativă la „git rebase” și utilizată pentru a recrea istoricul pe server fără un arbore de lucru (bare-repository, care nu conține arbore de lucru), procesarea simultană a mai multor ramuri, efectuarea operației de rebase pentru ramuri diferite de cele extrase în prezent sau pur și simplu pentru a accelera operațiile de fuziune.
- A fost adăugată suportul pentru sistemul de integrare continuă GitLab CI.
- În comenzile „git add” și „git stash” a fost adăugată suportul pentru atributele căilor „:(attr:…)”, stabilite similar cu comanda „git show”. De exemplu, „git add ‘:(attr:~binary)'” poate fi utilizat pentru a adăuga toate fișierele textuale (non-binare) în index. În plus, în noua versiune a fost propus atributul „builtin_objectmode” pentru filtrarea căilor fișierelor după drepturile de acces. De exemplu, „git add ‘:(attr:builtin_objectmode=100755)'” poate fi utilizat pentru a adăuga toate fișierele executabile.
- A fost adăugat suport pentru reutilizarea obiectelor distribuite pe mai multe fișiere pack, pentru care există un indice rezumativ (multi-pack-index) cu date despre disponibilitatea obiectelor (optimizare care permite, în loc de transferul efectiv de date, referirea la utilizarea datelor ce sunt deja prezente în fișierele pack). Începând cu versiunea 2.44, git poate acum să proceseze reutilizarea obiectelor pe mai multe fișiere pack, fără a fi necesară repachetarea repository-ului într-un singur fișier pack. Pentru a activa noua funcționalitate, trebuie să executați comenzile: git config —global pack.allowPackReuse multi git multi-pack-index write —bitmap
după care numărul de fișiere pack din care sunt reutilizate obiectele poate fi urmărit în valoarea „pack-reused … (from N)”, afișată la executarea „git push”.
- Comanda „git rebase —autosquash” poate fi acum utilizată pentru operațiuni rebase în modul non-interactiv, permițând executarea rebase-ului și aplicarea rapidă a corecțiilor fixup, fără a inspecta lista de modificări și fără a schimba variabila de mediu GIT_SEQUENCE_EDITOR.
- Comenzii „git merge-file” i s-a adăugat opțiunea „—diff-algorithm” pentru a alege un algoritm alternativ de evaluare a diferențelor între fișiere.
- În comanda „git checkout -B []” a fost interzisă actualizarea și extragerea ramurilor care utilizează un alt arbore de lucru. Pentru a reveni la comportamentul anterior, s-a adăugat opțiunea „—ignore-other-worktrees”.
- A fost adăugată posibilitatea de a atribui setării „git config advice.pushAlreadyExists” valoarea „true”, care elimină din mesajele de sugerare (hint) instrucțiunea de dezactivare a acestora („Disable this message with…”), care ocupă loc pe ecran.
- Executarea comenzii „git for-each-ref” cu opțiunea „—no-sort” a fost optimizată, care acum duce la o ieșire în ordine nespecificată (anterior, când se specifica „—no-sort”, tot se aplica sortarea alfabetică). După optimizări, utilizarea „—no-sort” acum accelerează „git for-each-ref” cu aproximativ 20% în repository-uri cu un număr mare de referințe.
- Backendul de gestionare a acreditivelor wincred a fost actualizat pentru a sprijini actualizarea tokenurilor OAuth, similar cu modul în care este implementat în backend-urile credential-cache și credential-libsecret.
- În „git fetch” a fost adăugat suport pentru parametrul de configurare „fetch.all”, care va fi procesat similar cu adăugarea opțiunii „—all” în linia de comandă.
Sursa: opennet.ro
