Lansarea sistemului de control al sursei distribuite Git 2.31

Sistemul distribuit de control al sursei Git 2.31 este acum disponibil. 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, în fiecare commit este utilizată hashing implicit al întregului istoric anterior, de asemenea, este posibilă certificarea etichetelor și commit-urilor individuale cu semnăturile digitale ale dezvoltatorilor;

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

  • S-a adăugat comanda „git maintenance”, care vă permite să efectuați lucrări periodice pe sisteme care nu acceptă cron. De exemplu, folosind o nouă comandă, puteți aranja ca procesul de împachetare a depozitului să ruleze periodic, astfel încât să nu trebuiască să așteptați până când depozitul este blocat când împachetarea este efectuată automat în timp ce rulați diverse comenzi. Comanda „git maintenance” vă permite să efectuați optimizări și operațiuni pentru a menține structura optimă a depozitului în fundal, fără a bloca sesiunea interactivă - o dată pe oră, se lucrează pentru a descărca în mod proactiv obiecte noi dintr-un depozit la distanță și a actualiza fișier cu graficul de comitere, iar procesul de împachetare a depozitului începe în fiecare noapte.
  • S-a adăugat suport pentru menținerea unui index invers (revindex) pe disc pentru fișierele pachet. Amintiți-vă că Git stochează toate datele sub formă de obiecte, care se află în fișiere separate. Pentru a crește eficiența lucrului cu depozitul, obiectele sunt plasate suplimentar în fișiere pachet, în care informațiile sunt prezentate sub forma unui flux de obiecte care se succed unele pe altele (un format similar este utilizat atunci când se transferă obiecte cu git fetch și git push comenzi). Pentru fiecare fișier pachet, este creat un fișier index (.idx), care vă permite să determinați foarte rapid offset-ul în fișierul pachet la care este stocat obiectul dat folosind identificatorul de obiect. Introdus în Git 2.31, indexul invers (.rev) are ca scop optimizarea procesului de determinare a unui identificator de obiect din informații despre plasarea unui obiect într-un fișier pachet.

    Anterior, o astfel de conversie se făcea din mers în timp ce analiza fișierul pachet și era stocată doar în memorie, ceea ce nu permitea reutilizarea unor indici similari și forța generarea indexului de fiecare dată. Operația de construire a unui index se reduce la construirea unei matrice de perechi obiect-poziție și sortarea lui după poziție, ceea ce poate dura mult timp pentru fișierele pachet mari.

    De exemplu, o operație de afișare a conținutului obiectelor, care utilizează un index direct, a fost de 62 de ori mai rapidă decât o operație de afișare a dimensiunii obiectelor, pentru care datele de la poziție la obiect nu au fost indexate. După utilizarea indexului invers, aceste operațiuni au început să dureze aproximativ același timp. Indexurile inverse vă permit, de asemenea, să accelerați operațiunile de trimitere a obiectelor atunci când executați comenzi de preluare și împingere prin transferul direct de date gata făcute de pe disc. În mod implicit, indecșii inversi nu sunt creați pentru a le genera, trebuie să activați setarea „git config pack.writeReverseIndex true” și apoi să împachetați depozitul cu comanda „git repack -Ad”.

  • S-au adăugat optimizări de performanță bazate pe apariția în formatul fișierului commit-graph, utilizate pentru optimizarea accesului la informații despre commit-uri, date noi despre numărul de generare a commit-urilor, care pot fi folosite pentru a accelera operațiuni suplimentare cu commit-uri.
  • A fost extinsă posibilitatea de a suprascrie numele implicit al ramurii principale în repozitoriile noi (setarea init.defaultBranch). La accesarea repozitoriilor externe, git încearcă să preia ramura indicată de HEAD, adică dacă ramura externă serverului folosește implicit ramura „main”, atunci operația „git clone” va încerca să preia local ramura „main”. În Git 2.31, suportul pentru acest tip de preluare este acum implementat și pentru repozitoriile goale. De exemplu, atunci când se clonează local un repozitoriu nou înainte de a adăuga primele patch-uri la acesta, copia locală va conține acum versiunea instalată pe dispozitivul extern. Server Numele implicit al ramurii principale.
  • S-a adăugat o opțiune --disk-usage la comanda „git rev-list” pentru a oferi un rezumat al dimensiunii obiectelor.
  • În așteptarea schimbării viitoare a backend-ului de îmbinare, detectarea redenumirii a fost optimizată semnificativ.
  • Suportul pentru vechea bibliotecă de expresii regulate PCRE1 a fost întrerupt.
  • Este posibil să interziceți cu forță utilizarea legăturilor scurtate, indiferent de algoritmul de hashing. Interdicția este activată prin atribuirea valorii „nu” parametrului core.abbrev.
  • S-a adăugat opțiunea „--path-format=(absolute|relative)” la comanda „git rev-parse” pentru a specifica în mod explicit dacă ar trebui să fie scoase căile relative sau absolute.
  • Scripturile de finalizare Bash facilitează adăugarea regulilor de completare pentru propriile subcomenzi „git”.
  • S-a adăugat o opțiune --stdin la comanda „git bundle” pentru a citi referințele din fluxul de intrare standard.
  • O nouă opțiune a fost adăugată la comanda „git log”: „--diff-merges=" "
  • S-a adăugat opțiunea „--deduplicatecan” la comanda „git ls-files” pentru a elimina rezultatul duplicat.
  • S-au adăugat măști noi pentru a exclude o serie de comite - " ^!” Și " ^- "
  • S-au adăugat opțiunile „--left-only” și „--right-only” la comanda „git range-diff” pentru a afișa doar o parte a intervalului de comparat.
  • S-au adăugat opțiuni --skip-to= la comenzile „git diff” și „git log”. „ și „—rotire-to= » pentru a sări peste sau a trece la sfârșitul căilor de pornire.
  • S-a adăugat opțiunea „--skip-to=" la comanda „git difftool”. » pentru a relua o sesiune întreruptă dintr-o cale aleatorie.
  • Codul de conduită, care definește principiile de bază pentru rezolvarea conflictelor dintre dezvoltatori, a fost actualizat la versiunea 2.0 (anterior versiunea 1.4 a fost folosită).

    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