După trei luni de dezvoltare, sistemul distribuit de control al surselor Git 2.44 a fost lansat. Git este unul dintre cele mai populare, fiabile și de înaltă performanță sisteme de control al versiunilor, oferind instrumente flexibile de dezvoltare neliniară bazate pe ramificare și îmbinare. Pentru a asigura integritatea istoricului și rezistența la modificări retroactive, în fiecare commit este utilizată hashing implicit al întregului istoric anterior, este de asemenea posibilă certificarea etichetelor și commit-urilor individuale cu semnături digitale ale dezvoltatorilor; Codul Git este distribuit sub licența GPLv2+.
În comparație cu versiunea anterioară, noua versiune a inclus 503 modificări, pregătite cu participarea a 85 de dezvoltatori, dintre care 34 au participat pentru prima dată la dezvoltare. Principalele inovații:
- 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 funcțional (un depozit gol care nu conține un arbore funcțional), lucrând pe mai multe ramuri simultan, efectuând o operațiune de rebase pe alte ramuri decât cea extrasă în prezent sau pur și simplu pentru a accelera operațiunile de îmbinare.
- S-a adăugat suport pentru sistemul de integrare continuă GitLab CI.
- Comenzile „git add” și „git stash” acceptă acum atributele de cale „:(attr:...)”, care sunt setate într-un mod similar cu comanda „git show”. De exemplu, „git add ':(attr:~binary)'” poate fi folosit pentru a adăuga toate fișierele text (non-binare) la index. În plus, noua versiune oferă atributul „builtin_objectmode” pentru a filtra căile fișierelor în funcție de drepturile de acces. De exemplu, „git add ':(attr:builtin_objectmode=100755)'” poate fi folosit pentru a adăuga toate executabilele.
- S-a adăugat suport pentru reutilizarea obiectelor distribuite în mai multe fișiere pachet care au un index multi-pack cu date despre disponibilitatea obiectelor (o optimizare care permite, în loc să transfere efectiv date, să se facă referire la utilizarea datelor deja prezente în fișierele pachetului). Începând cu versiunea 2.44, git poate gestiona acum reutilizarea obiectelor în mai multe fișiere pachet, fără a fi nevoie să reambaleze depozitul într-un singur fișier pachet. Pentru a activa noua caracteristică, rulați următoarele comenzi: git config —global pack.allowPackReuse multi git multi-pack-index write —bitmap
după care numărul de fișiere pachet din care obiectele sunt reutilizate poate fi urmărit în valoarea „pack-reused... (from N)” afișată la efectuarea unui „git push”.
- Comanda „git rebase --autosquash” poate fi folosită acum pentru operațiuni de rebazare în modul non-interactiv, permițându-vă să rebazați și să aplicați rapid remedieri fără a inspecta jurnalul de modificări sau a modifica variabila de mediu GIT_SEQUENCE_EDITOR.
- S-a adăugat o opțiune „--diff-algorithm” la comanda „git merge-file” pentru a selecta un algoritm alternativ pentru evaluarea diferențelor dintre fișiere.
- În comanda „git checkout -B [ ]" nu permite actualizarea sau preluarea ramurilor care folosesc un arbore de lucru diferit. Pentru a returna vechiul comportament, a fost adăugată opțiunea „-ignore-other-worktrees”.
- S-a adăugat posibilitatea de a seta setarea „git config advice.pushAlreadyExists” la „true”, care elimină instrucțiunile de dezactivare a acestora („Dezactivați acest mesaj cu...”), care ocupă spațiu pe ecran când se afișează indicii.
- Execuția optimizată a comenzii „git for-each-ref” cu opțiunea „--no-sort”, care acum are ca rezultat o ieșire într-o ordine nespecificată (anterior, specificarea „--no-sort” avea ca rezultat sortarea alfabetică) . După ce faceți optimizări, folosirea „--no-sort” accelerează acum „git for-each-ref” cu aproximativ 20% în depozitele cu un număr mare de referințe.
- Suportul pentru actualizarea token-urilor OAuth a fost adăugat la backend-ul de gestionare a acreditărilor wincred, similar modului în care este implementat în backend-urile credential-cache și credential-libsecret.
- „git fetch” a adăugat suport pentru opțiunea de configurare „fetch.all”, care va fi gestionată în mod similar cu adăugarea opțiunii „--all” pe linia de comandă.
Sursa: opennet.ru
