Versiunea de control sursă Git 2.35

După două luni de dezvoltare, sistemul distribuit de control al surselor Git 2.35 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, se folosește hashingul implicit al întregului istoric anterior în fiecare commit și este, de asemenea, posibilă certificarea etichetelor și commit-urilor individuale cu semnăturile digitale ale dezvoltatorilor.

În comparație cu versiunea anterioară, noua versiune a inclus 494 de modificări, pregătite cu participarea a 93 de dezvoltatori, dintre care 35 au participat pentru prima dată la dezvoltare. Principalele inovații:

  • Au fost extinse posibilitățile de utilizare a cheilor SSH pentru a semna digital obiecte Git. Pentru a limita perioada de valabilitate a mai multor chei, a fost adăugat suport pentru directivele OpenSSH „valid-before” și „valid-after”, cu care puteți asigura funcționarea corectă a semnăturilor după ce cheia a fost rotită de unul dintre dezvoltatori. Înainte de aceasta, a existat o problemă cu separarea semnăturilor de către cheia veche și cea nouă - dacă ștergeți cheia veche, va fi imposibil să verificați semnăturile făcute cu ea, iar dacă o lăsați, atunci va rămâne posibil să creați semnături noi cu cheia veche, care a fost deja înlocuită cu o altă cheie. Folosind valid-before și valid-after puteți separa domeniul de aplicare al cheilor în funcție de momentul în care a fost creată semnătura.
  • În setarea merge.conflictStyle, care vă permite să selectați modul de afișare a informațiilor despre conflicte în timpul unei îmbinări, a apărut suportul pentru modul „zdiff3”, care mută toate liniile standard specificate la începutul sau la sfârșitul conflictului în afara conflictului zonă, care permite o prezentare mai compactă a informațiilor.
  • Modul „--staged” a fost adăugat la comanda „git stash”, care vă permite să ascundeți doar modificările adăugate la index, de exemplu într-o situație în care trebuie să amânați temporar unele dintre modificările complexe pentru a mai întâi adăugați ceea ce este deja gata și ocupă-te de restul după un timp. Modul este similar cu comanda „git commit”, scriind doar modificările plasate în index, dar în loc să creeze un nou commit în „git stash —staged”, rezultatul este stocat în zona temporară stash. Odată ce modificările sunt necesare, acestea pot fi anulate cu comanda „git stash pop”.
  • Un nou specificator de format a fost adăugat la comanda „git log”, „--format=%(describe)”, care vă permite să combinați rezultatul „git log” cu rezultatul comenzii „git describe”. Parametrii pentru „git describe” sunt specificați direct în interiorul specificatorului („-format=%(describe:match= ,exclude= )"), în care puteți include și etichete scurtate ("—format=%(describe:tags= )") și configurați numărul de caractere hexazecimale pentru a identifica obiectele ("—format=%(describe:abbrev= )")). De exemplu, pentru a enumera ultimele 8 comite-uri ale căror etichete nu au o etichetă candidată pentru lansare și pentru a specifica identificatori de 8 caractere, puteți utiliza comanda: $ git log -8 —format='%(describe:exclude=*-rc *,abbrev=13 )' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2edb95c94 v056-2.34.1-g642f56f95 v8-7-g2.34.1edb203c9 gb2980902bd2.34.1 bbc640f3 v41-212-gffb2.34.1f639d v36-65715- gdf4132cXNUMXadebXNUMX vXNUMX-XNUMX-gXNUMXbXNUMXaXNUMX
  • Setarea user.signingKey acceptă acum noi tipuri de chei care nu sunt limitate la tipul „ssh-” și care specifică calea completă a fișierului către cheie. Tipurile alternative sunt specificate folosind prefixul „key::”, de exemplu „key::ecdsa-sha2-nistp256” pentru cheile ECDSA.
  • Viteza de generare a unei liste de modificări în modul „—histogramă”, precum și atunci când se utilizează opțiunea „—color-moved-ws”, care controlează evidențierea spațiilor într-o diferență de culoare, a fost semnificativ crescută.
  • Comanda „git jump”, folosită pentru a oferi lui Vim informații despre saltul exact în poziția dorită într-un fișier atunci când analizează conflictele de îmbinare, vizualizează diferențe sau efectuează o operație de căutare, oferă posibilitatea de a restrânge conflictele de îmbinare acoperite. De exemplu, pentru a limita operațiunile la directorul „foo”, puteți specifica „git jump merge - foo” și pentru a exclude directorul „Documentație” de la procesare - „git jump merge - „:^Documentation””
  • S-a lucrat pentru standardizarea utilizării tipului „size_t” în loc de „unsigned long” pentru valorile reprezentând dimensiunea obiectelor, ceea ce a făcut posibilă utilizarea filtrelor „curate” și „smudge” cu fișiere mai mari de 4 GB pe toate platformele, inclusiv platformele cu modelul de date LLP64, tipul „unsigned long” în care este limitat la 4 octeți.
  • Opțiunea „-empty=(stop|drop|keep)” a fost adăugată la comanda „git am”, care vă permite să selectați comportamentul pentru mesajele goale care nu conțin corecții atunci când analizați corecțiile din căsuța poștală. Valoarea „stop” va încheia întreaga operațiune de corecție, „drop” va omite un patch gol, iar „keep” va crea un commit gol.
  • S-a adăugat suport pentru indexuri parțiale (index sparse) la comenzile „git reset”, „git diff”, „git blame”, „git fetch”, „git pull” și „git ls-files” pentru a îmbunătăți performanța și a economisi spațiu în depozite , în care sunt efectuate operațiuni de clonare parțială (sparse-checkout).
  • Comanda „git sparse-checkout init” a fost retrasă și ar trebui înlocuită cu „git sparse-checkout set”.
  • S-a adăugat implementarea inițială a unui nou backend „reftable” pentru stocarea referințelor, cum ar fi ramurile și etichetele în depozit. Noul backend folosește stocarea bloc utilizată de proiectul JGit și este optimizat pentru stocarea unui număr foarte mare de referințe. Backend-ul nu este încă integrat cu sistemul refs și nu este pregătit pentru utilizare practică.
  • Paleta de culori a comenzii „git grep” a fost ajustată pentru a se potrivi cu utilitarul GNU grep.

Sursa: opennet.ru

Adauga un comentariu