Versiunea de control sursă Git 2.37

A fost anunțată lansarea sistemului de control al surselor distribuite Git 2.37. 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 istoriei și rezistența la modificări retroactive, în fiecare commit este utilizat hashing implicit al întregului istoric anterior; de asemenea, este posibilă certificarea etichetelor individuale și commit-urilor cu semnăturile digitale ale dezvoltatorilor.

În comparație cu versiunea anterioară, 395 modificări au fost adoptate în noua versiune, pregătită cu participarea a 75 de dezvoltatori, dintre care 20 au participat pentru prima dată la dezvoltare. Principalele inovații:

  • Mecanismul indexurilor parțiale (indice sparse), care acoperă doar o parte a depozitului, a fost pregătit pentru utilizare pe scară largă. Indecșii parțiali pot îmbunătăți performanța și pot economisi spațiu în depozitele care efectuează operațiuni de clonare parțială (sparse-checkout) sau lucrează cu o copie incompletă a depozitului. Noua versiune completează integrarea indexurilor parțiale în comenzile git show, git sparse-checkout și git stash. Cel mai vizibil beneficiu de performanță în urma utilizării indicilor parțiali este observat cu comanda „git stash”, care a înregistrat o creștere cu 80% a vitezei de execuție în unele situații.
  • Un nou mecanism de „pachete cruft” a fost implementat pentru împachetarea obiectelor inaccesibile care nu sunt referite în depozit (nu sunt referite prin ramuri sau etichete). 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ă. Pentru a urmări perioada de apariție a obiectelor inaccesibile, este necesar să le atașați etichete cu timpul de schimbare a obiectelor similare, ceea ce nu permite stocarea lor într-un fișier pachet în care toate obiectele au un timp comun de schimbare. Anterior, salvarea fiecărui obiect într-un fișier separat a dus la probleme când exista un număr mare de obiecte proaspete, inaccesibile, care nu erau încă eligibile pentru ștergere. Mecanismul propus de „pachete cruft” vă permite să stocați toate obiectele inaccesibile într-un fișier pachet și să reflectați datele despre timpul de modificare a fiecărui obiect într-un tabel separat stocat într-un fișier cu extensia „.mtimes”.
  • Pentru Windows și macOS, există un mecanism încorporat pentru urmărirea modificărilor aduse sistemului de fișiere, permițându-vă să evitați iterarea pe întregul director de lucru atunci când efectuați operațiuni precum „git status”. Anterior, pentru a urmări modificările, utilitare externe pentru urmărirea modificărilor în FS, cum ar fi Watchman, puteau fi conectate prin cârlige, dar acest lucru necesita instalarea de programe și configurații suplimentare. Acum, funcționalitatea specificată este încorporată și poate fi activată cu comanda „git config core.fsmonitor true”.
  • În comanda „git sparse-checkout”, suportul pentru o alternativă la modul „—con”, metoda de definire a șabloanelor pentru clonarea parțială, a fost depreciată, ceea ce permite, la determinarea părții din depozit care este supusă operație de clonare, pentru a lista fișiere individuale folosind sintaxa „.gitignore”, care nu permite utilizarea indicilor parțiali pentru optimizare.
  • Flexibilitate crescută în configurarea apelului fsync() pentru a șterge modificările de pe disc. Suport pentru strategia de sincronizare „batch” a fost adăugat la parametrul „core.fsyncMethod”, care permite accelerarea lucrărilor la scrierea unui număr mare de fișiere individuale prin acumularea de modificări în memoria cache de writeback, care este resetată de un singur fsync() apel. Testul, care a dus la adăugarea a 500 de fișiere folosind comanda „git add”, a fost finalizat în 0.15 secunde când a fost activat noul mod, în timp ce apelarea fsync() a durat 1.88 secunde pentru fiecare fișier și 0.06 secunde fără a utiliza fsync .
  • Comenzile de traversare a ramurilor precum „git log” și „git rev-list” au acum o opțiune „-since-as-filter=X” care vă permite să filtrați informațiile despre comitări mai vechi decât „X”. Spre deosebire de opțiunea „—deoarece”, noua comandă este implementată ca un filtru care nu oprește căutarea după prima comitere mai veche decât ora specificată.
  • În comanda „git remote”, atunci când se specifică marcajul „-v”, sunt afișate informații despre clonele parțiale ale depozitului.
  • S-a adăugat setarea „transfer.credentialsInUrl”, care poate lua valorile „warn”, „die” și „allow”. Dacă este specificat în parametrul „telecomandă. .url”, acreditările în text simplu, încercarea de a efectua o operațiune de „preluare” sau „împingere” va eșua cu o eroare dacă setarea „transfer.credentialsInUrl” este setată la „die” sau un avertisment dacă este setată la „avertizare”.
  • În mod implicit, noua implementare a modului interactiv al comenzii „git add -i”, rescrisă din Perl în C, este activată.

Sursa: opennet.ru

Adauga un comentariu