Versiunea de control sursă Git 2.56

Git 2.56, sistemul distribuit de gestionare a codului sursă, a fost lansat. Git este licențiat sub licența GPLv2+. Comparativ cu versiunea anterioară, noua versiune include 748 de modificări pregătite de 104 dezvoltatori, dintre care 39 sunt noi în dezvoltarea Git. Noi caracteristici cheie (1, 2, 3):

  • A fost adăugat un mod „git add --resolved” pentru rezolvarea conflictelor la fuzionarea ramurilor. Acest mod verifică fișierele pentru marcaje de conflict și, dacă se detectează un marcaj în cel puțin un fișier, returnează o eroare, nu indexează niciun fișier și afișează o listă de fișiere care necesită corecție. Spre deosebire de comanda „git add --update”, acest nou mod procesează doar fișierele aflate într-o stare de conflict și ignoră fișierele modificate care nu au legătură cu conflictul. Acest lucru permite finalizarea în siguranță a fuziunilor de ramuri, chiar dacă există alte editări neterminate în directorul de lucru (comanda „git add --update” a adăugat la index toate fișierele modificate urmărite anterior în directorul de lucru).
  • Lucrul cu repozitorii mari a fost accelerat semnificativ prin optimizarea algoritmului de căutare a celor mai recente commit-uri comune la fuzionarea ramurilor și compararea commit-urilor. Procesul ia în considerare acum commit-urile care aparțin exclusiv unei singure ramuri, permițând oprirea scanării imediat după găsirea tuturor strămoșilor comuni posibili, fără a pierde timp cu parcurgerea ulterioară a istoricului modificărilor. Într-un repozitoriu testat, viteza de căutare a crescut în medie de 20 de ori, în timp ce în altul, accelerarea a ajuns la 70 de ori. La rularea comenzii „git merge-base --all v4.8 v4.9” în repozitoriu cu kernelul... Linux Numărul de pași de traversare a scăzut de la 167 mii la 3.8 mii.
  • Modul de reîmpachetare „--path-walk” a fost adaptat pentru utilizarea pe server, permițând crearea unor fișiere pack mai compacte prin gruparea obiectelor după calea lor în arborele de directoare (de exemplu, pentru depozitul Fluent UI, utilizarea „--path-walk” a redus dimensiunea fișierului pack de la 558 MB la 164 MB). Noua versiune acceptă utilizarea modului „--path-walk” împreună cu bitmap-uri de accesibilitate și insule delta, care sunt utilizate de serviciile de găzduire Git pentru a accelera munca și a izola furcile de depozitul principal.
  • Au fost eliminate blocajele care cauzau calcule redundante în depozitele mari: au fost eliminate verificările inutile ale stării fișierelor la scrierea în reftable; rescanarea listei a fost eliminată pentru fiecare inserare nouă de fișiere pack; operațiunile reftable cu înregistrări de ștergere mari acumulate au fost accelerate; performanța git diff a fost optimizată la specificarea restricțiilor privind calea fișierelor. După aceste optimizări, operațiunile reftable cu un număr mare de ștergeri au fost accelerate de 65 de ori (de la 13 secunde la 0.2 secunde), iar comanda problematică git diff dintr-un depozit Chromium cu 500000 de elemente în index durează acum 0.07 secunde în loc de 8 minute.
  • Comanda experimentală „git history”, care oferă posibilitatea de a rescrie istoricul modificărilor, a fost actualizată pentru a include o operațiune „git history drop” pentru eliminarea commit-ului selectat și atașarea automată a descendenților acestuia la commit-ul părinte.
  • Comanda „git branch --delete-merged 'origin/*' 'topic-*'” a fost adăugată pentru ștergerea în siguranță a grupurilor de ramuri locale ale căror modificări au fost deja înregistrate într-un depozit extern. Wildcard-urile pot fi utilizate pentru a filtra ramurile și depozitele. Indicatorul „--dry-run” poate fi utilizat pentru a analiza candidații pentru ștergere fără a efectua efectiv operațiunea.
  • A fost adăugată comanda „git refs create|update|delete|rename”, care combină operațiuni de nivel scăzut pentru crearea, ștergerea, redenumirea și actualizarea ref-urilor.
  • Comanda „git bisect run” are acum opțiunea „--reset-when-found=[” ]”, care readuce automat depozitul la starea de dinaintea începerii căutării sau lasă activ commit-ul problematic, fără a fi nevoie să rulați separat comanda „git bisect reset”.
  • Comanda „git replay” are acum un indicator „--linearize” pentru a utiliza o topologie de îmbinare plată, similară cu „git rebase --no-rebase-merges”, dar fără a accesa arborele de lucru.
  • Comanda „git log --follow” urmărește acum redenumirile fișierelor în istoricul commit-urilor neliniare, cum ar fi la fuzionarea subramurilor. Calea fișierului este acum înregistrată separat pentru fiecare commit părinte, rezultatul fiind independent de ordinea în care este parcurs istoricul commit-urilor.
  • A fost adăugată posibilitatea de a utiliza comanda „git repack -a --filter=blob:limit=1m --drop-filtered” pentru a elimina obiectele mari descărcate la cerere dintr-un depozit extern care nu sunt utilizate în indexul curent. Aceste obiecte vor fi descărcate din nou automat la accesarea lor ulterioară.
  • Comanda „git log --graph” pentru grafuri cu rădăcini independente multiple adaugă acum indentare pentru a separa clar commit-urile fără legătură.
  • Greșelile de scriere frecvente, cum ar fi specificarea comenzii „git push origin/main” în loc de „git push origin main” sau „git branch --set-upstream-to origin main” în loc de „git branch --set-upstream-to=origin/main”, sunt acum detectate și este afișat un indiciu despre cum se utilizează varianta corectă.

Sursa: opennet.ru

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster