Lansarea versiunii 2.50 a sistemului de gestionare a versiunilor Git

A fost publicat versiunea 2.50 a sistemului distribuit de gestionare a codului sursă Git. Git se remarcă prin performanța sa ridicată și oferă instrumente pentru dezvoltare neliniară, bazate pe ramificare și unire. Pentru a asigura integritatea istoriei și rezistența la modificări „retroactive”, se utilizează o funcționare implicită a hash-ului întregii istorii anterioare în fiecare commit, precum și certificarea prin semnături digitale a dezvoltatorilor pentru fiecare etichetă și commit. Codul Git este distribuit sub licența GPLv2+.

Comparativ cu versiunea anterioară, noua versiune include 621 de modificări, pregătite cu participarea a 98 de dezvoltatori, dintre care 35 participă pentru prima dată la dezvoltare. Principalele noutăți:

  • A fost extinsă posibilitatea de a împărți baza obiectelor inaccesibile („cruft packs”) în mai multe fișiere pack, pentru care în repository nu există referințe (ramuri sau etichete nu le referă). Folosirea mai multor fișiere pack mici în loc de unul mare permite reducerea semnificativă a operațiunilor de intrare/ieșire în timpul repackării repository-urilor cu un număr mare de obiecte inaccesibile, deoarece pentru fiecare operațiune de repack nu este nevoie să se rescrie toate datele.

    În noua versiune este oferită opțiunea „—combine-cruft-below-size”, cu ajutorul căreia se poate organiza combinarea fișierelor pack existente, a căror dimensiune nu depășește o valoare specificată. Spre deosebire de opțiunea anterioară „—max-cruft-size”, noua opțiune „—combine-cruft-below-size” nu limitează dimensiunea maximă a fișierului pack rezultat, ceea ce permite o combinare mai eficientă a fișierelor pack în repository-urile cu un număr mare de obiecte inaccesibile, dispersate în mai multe fișiere pack.

  • A fost adăugat suport experimental pentru actualizarea incrementală a indicelui multi-pack (MIDX), în care fiecare strat al indexului MIDX cu informații despre disponibilitatea obiectelor este stocat într-un fișier bitmap separat. În repository-urile foarte mari, forma de indecși implementată permite adăugarea rapidă și eficientă a noilor bitmap-uri de disponibilitate a obiectelor pe măsură ce sosesc commit-urile.
  • Motorul vechi de execuție pentru operațiunile de îmbinare „recursive” a fost eliminat din baza de cod, fiind înlocuit de un motor complet refăcut numit „ORT” (Ostensibly Recursive’s Twin), mai performant, funcțional și mai ușor de întreținut. ORT permite determinarea posibilității de a combina două obiecte fără a crea noi obiecte în repository (în cazul vechiului motor, era necesară executarea comenzii „git merge-tree —write-tree”, care scria noi obiecte în repository). În Git 2.50, comanda merge-tree a implementat opțiunea „—quiet”, prin care se poate verifica posibilitatea de îmbinare pe baza codului de returnare fără a scrie date în repository.
  • Comanda „git cat-file —batch” și comenzi similare au primit opțiunea „—filter”, permițând omisiunea unor obiecte în timpul execuției operației. git cat-file —batch-check='%(objectname)' —filter='object:type=tree'
  • Comanda „git maintenance” a implementat trei noi acțiuni: worktree-prune, rerere-gc și reflog-expire. Acțiunea worktree-prune este destinată eliminării arborilor de lucru (worktrees) învechiți sau corupți din repository. Acțiunea rerere-gc elimină vechile înregistrări rămase după rezolvarea conflictelor de îmbinare. Acțiunea reflog-expire elimină obiectele învechite și inaccesibile din reflog.
  • A fost adăugată comanda „git reflog drop”, care elimină toate datele reflog pentru ramura specificată.
  • A fost optimizată procesarea și utilizarea referințelor, de exemplu, a fost implementat caching-ul prefixelor de referință, au fost eliminate verificările inutile la executarea comenzii „git update-ref”, crescând eficiența căutării iteratoarelor de referințe existente.
  • Pentru biblioteca cURL au fost adăugate setările KeepAlive: http.keepAliveIdle, http.keepAliveInterval și http.keepAliveCount.
  • În comanda „git rev-list” a fost implementată posibilitatea de a genera ieșire într-un format prietenos pentru procesarea automată, în care fiecare câmp este separat prin caracterul NUL.
  • Limbajul Perl a fost exclus din dependențele necesare utilitarelor de lucru cu documentația și executării suitei de teste („make test”). Multe one-liners Perl din teste au fost înlocuite cu funcții shell sau refăcute în limbajul C.
  • A fost adăugat un procesor userdiff pentru formatul fișierelor de configurare „.ini”.
  • În comanda send-email a fost îmbunătățită suportul pentru serverul SMTP Outlook.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster