Versiunea de control sursă Git 2.39

După două luni de dezvoltare, sistemul distribuit de control al surselor Git 2.39 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 utilizează 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 483 de modificări, pregătite cu participarea a 86 de dezvoltatori, dintre care 31 au participat pentru prima dată la dezvoltare. Principalele inovații:

  • Comanda „git shortlog”, concepută pentru a afișa rezumate cu statistici din istoricul modificărilor, a adăugat o opțiune „-group” pentru gruparea arbitrară a comitărilor pe câmpuri, care nu se limitează la autor sau committer. De exemplu, pentru a afișa o listă de dezvoltatori cu informații despre numărul de modificări, ținând cont de ajutoarele menționate în câmpul „Co-authored-by”, puteți folosi comanda: git shortlog -ns --group=author - -grup=trailer:co-autorat-de

    Ieșirea jurnalului scurt poate fi agregată folosind specificatori de formatare, iar opțiunea „--group” poate simplifica în mod semnificativ crearea de rapoarte complexe și poate elimina necesitatea unor comenzi suplimentare de sortare. De exemplu, pentru a crea un raport cu informații despre câte comiteri pentru o anumită versiune au fost acceptate în fiecare lună, puteți specifica: git shortlog v2.38.0.. —date='format:%Y-%m' —group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Anterior, pentru a efectua o operație similară ar fi fost necesar să se folosească utilitatile sort și uniq: git log v2.38.0 .. —date='format:%Y -%m' —format='%cd' | sortare | uniq -c

  • Capacitățile mecanismului „cruft pack”, conceput pentru a împacheta obiecte inaccesibile care nu sunt referite în depozit (nu sunt referite prin ramuri sau etichete), au fost extinse. Obiectele inaccesibile sunt șterse de colectorul de gunoi, dar rămân în depozit un anumit timp înainte de a fi șterse pentru a evita condițiile de cursă. Mecanismul „cruft pack-uri” vă permite să stocați toate obiectele inaccesibile într-un singur fișier pachet și să afișați datele despre timpul de modificare a fiecărui obiect într-un tabel separat, stocat într-un fișier separat cu extensia „.mtimes”, astfel încât acestea să facă să nu se suprapună cu timpul total de modificare.

    Perioada de timp în care obiectele inaccesibile rămân în depozit înainte de a fi șterse efectiv este determinată de opțiunea „—prune=" " Cu toate acestea, deși amânarea înainte de ștergere este o modalitate destul de eficientă și practică de a preveni corupția depozitului din cauza condițiilor de cursă, nu este 100% fiabilă. Pentru a facilita restaurarea unui depozit deteriorat, noua versiune oferă posibilitatea de a salva obiectele lipsă prin adăugarea opțiunii „--expire-to” la comanda „git repack”, care vă permite să specificați un fișier pentru a crea un fișier extern. copie a tuturor obiectelor șterse. De exemplu, pentru a salva obiecte inaccesibile care nu s-au modificat în ultimele 5 minute în fișierul backup.git, puteți folosi comanda: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • A crescut semnificativ (până la 70%) viteza operațiunii „git grep -cached” la căutarea în zonele care folosesc clonarea parțială (sparse-checkout) și pentru care există indici parțiali (sparse index). Anterior, la specificarea opțiunii „-cached”, căutarea a fost efectuată mai întâi în indexul obișnuit, iar apoi în cele parțiale, ceea ce a dus la întârzieri vizibile la căutarea în depozite mari.
  • Verificarea de către server a coerenței noilor obiecte înainte ca acestea să fie plasate în depozit în timpul operațiunii „git push” a fost accelerată. Trecând la contabilizarea numai a legăturilor declarate la verificare, într-un depozit de testare cu 7 milioane de legături, dintre care doar 3% sunt acoperite de operația push, optimizările efectuate au permis reducerea timpului de verificare de 4.5 ori.
  • Pentru a proteja împotriva potențialelor depășiri de numere întregi în cod, comanda „git apply” limitează dimensiunea maximă a patch-urilor care pot fi procesate. Dacă dimensiunea patch-ului depășește 1 GB, acum va fi afișată o eroare.
  • Pentru a vă proteja împotriva potențialelor vulnerabilități, au fost făcute modificări pentru a curăța informațiile inutile din anteturile setate atunci când utilizați modulul h2h3 cu opțiunea GIT_TRACE_CURL=1 sau GIT_CURL_VERBOSE=1 împreună cu HTTP/2.
  • Când efectuați o verificare pe o ramură care este o legătură simbolică către o altă ramură, comanda „git symbolic-ref HEAD” afișează acum numele ramurii țintă, mai degrabă decât numele link-ului simbolic.
  • S-a adăugat suport pentru argumentul @{-1} la opțiunea „--edit-description” (“git branch —edit-description @{-1}”) pentru editarea descrierii unei ramuri anterioare.
  • S-a adăugat comanda „git merge-tree --stdin” pentru a transmite o listă de opțiuni prin intrarea standard.
  • Pe sistemele de fișiere din rețea, handlerul fsmonitor, care monitorizează modificările din sistemul de fișiere, este dezactivat implicit.

Sursa: opennet.ru

Adauga un comentariu