Lansarea sistemului distribuit de control al codului sursă Git 2.24

Disponibil eliberarea unui sistem distribuit de gestionare a codului sursă Git 2.24.0. Git este unul dintre cele mai populare, fiabile și puternice sisteme de gestionare a versiunilor, oferind instrumente flexibile pentru dezvoltarea non-lineară, bazate pe ramificare și fuziune a ramurilor. Pentru a asigura integritatea istoriei și rezistența la modificări retroactive, se utilizează o hashare implicită a întregii istorii anterioare în fiecare commit, iar cote și commituri pot fi certificate prin semnături digitale ale dezvoltatorilor.

Comparativ cu versiunea anterioară, noua versiune conține 544 de modificări, realizate cu contribuția a 78 de dezvoltatori, dintre care 21 au participat pentru prima dată la dezvoltare. Principalele noutăți:

  • A fost adăugată suportul pentru macrocomenzi de configurare, prin care se poate comuta rapid între diferite seturi de setări, fără a intra în detalii legate de opțiunile specifice. Prin intermediul macrocomenzilor, nu mai este nevoie să îți amintești care setări trebuie schimbate pentru a activa o anumită funcționalitate. De exemplu, în cazul unei încetiniri a lucrului cu un repository mare, poate fi necesar să se treacă la un nou mecanism de indexare, să se activeze compresia prefixelor de cale și să se utilizeze cache-ul fișierelor neefectuate, setând parametrul index.version la 4 și activând core.untrackedCache. Macrocomenzile permit economisirea timpului căutând soluția potrivită în documentație, activând imediat setările cu optimizări pentru repository-uri cu un număr mare de fișiere:

    git config feature.manyFiles true

  • Stocarea obiectelor în formă de graf al commit-urilor (commit-graph) este activată implicit, unde indexarea folosește o structură grafică în loc de o listă liniară de hash-uri de obiecte cu referințe la alte obiecte. Dacă anterior, pentru a determina versiunile care conțin o anumită corectare, era necesară încărcarea fiecărui obiect de pe disc pentru a căuta referințe, în cazul stocării sub formă de graf se pot identifica imediat toate legăturile necesare. Trecerea la stocarea sub formă de graf al commit-urilor în repository-urile nucleului Linux și Git a dus la o îmbunătățire aproape dublă a performanței operațiunilor cu ramuri. Pentru a activa noul mod de stocare după actualizarea la Git 2.24, trebuie să rulați comanda „git gc.”

    Modificările legate de commit-graph includ, de asemenea, uniformizarea indicelui de progres al operațiunii în comenzile asociate cu commit-graph («git commit-graph write», «git commit-graph verify» etc.). Indicele de progres este acum afișat în mod implicit doar pentru terminal (pentru a schimba comportamentul, ar trebui folosită opțiunea «-[no-]progress»). În plus, a fost adăugat un nou parametru de configurare fetch.writeCommitGraph, care activează actualizarea automată a fișierului cu graficul commit-urilor în timpul operațiunilor «git fetch» (toate commit-urile extrase din reposituri externe vor fi imediat incluse în commit-graph fără a fi nevoie de o lansare separată a auto-gc);

  • A fost adăugată comanda pentru rescrierea istoricului modificărilor — «git filter-repo», care este o alternativă mai simplă la comanda «git filter-branch» pentru efectuarea operațiunilor cu istoricul modificărilor în repositoriu (de exemplu, eliminarea unui fișier din repositoriu sau extragerea istoricului modificărilor dintr-un anumit director). Pentru a îmbunătăți eficiența, operațiile în «git filter-repo» se realizează pe o reprezentare a istoricului sub forma unui flux continuu, în loc de o analiză ordonată pe commit-uri.

    Filtrarea istoricului se realizează prin opțiunea «-path-{glob,regex}», care permite aplicarea atât a mascărilor simple, cât și a expresiilor regulate. De asemenea, sunt disponibile opțiuni pentru executarea operației de „căutare și înlocuire” sau curățare a obiectelor binare a căror dimensiune depășește un anumit prag. Fiecare commit rescris primește un nou identificator hash SHA-1 și toate referințele la commit-ul înlocuit sunt actualizate conform noului identificator.

    Pentru a afișa un rezumat statistic al repositoriului (numărul de obiecte pe tipuri, cele mai mari fișiere și directoare, ce extensii necesită mai mult spațiu pe disc etc.), este prevăzută opțiunea „-analyze”. Pentru a extinde funcționalitatea, există posibilitatea de a conecta callback-uri arbitrare scrise în Python, prin intermediul cărora se pot crea atât subcomenzi noi, cât și se pot gestiona diverse evenimente (de exemplu, noi tipuri de fișiere);

  • A fost adăgată opțiunea «—end-of-options», care permite separarea opțiunilor de numele legăturilor, care pot începe cu simbolul «-» și sunt interpretate ca fiind opțiuni («git log —end-of-options —super-dangerous-option»). Dacă în utilizarea comună astfel de nume pot fi evitate ca «git log ‘refs/heads/—super-dangerous-option'», în scripturi ar putea apărea probleme de determinare a spațiului de nume. Separatorul acceptat » — » în acest caz nu este aplicabil, deoarece deja este folosit pentru separarea numelui legăturilor de fișiere (de exemplu, «git log —end-of-options —super-dangerous-option ^master — path/to/file»);
  • În «git rebase —rebase-merges» au fost adăugate opțiunile «—strategy» și «—strategy-option» pentru a alege strategia de fuzionare;
  • A fost adăugat un nou handler «.git/hooks/pre-merge-commit», apelat după finalizarea fuziunii, dar înainte de scrierea commit-ului rezultat;
  • În motorul de completare automată a comenzilor a fost adăugată suportul pentru completarea variabilelor de configurare legate de setările comenzilor specifice.
    De exemplu, când trebuie să tastezi «git -c core.autocrlf=false add path/to/my/file», dar nu-ți amintești numele exact al variabilei «core.autocrlf», poți apăsa Tab pentru a obține un indiciu.

În plus, dezvoltatorii Git a fost adăugată codul de conduită pentru participanții la proiect, care definește principiile de bază pentru rezolvarea situațiilor conflictuale. Documentul se bazează pe recomandările «Contributor Covenant», aplicate în multe proiecte deschise, inclusiv nucleul Linux, Eclipse, Freedesktop, GitLab, Ruby și Kubernetes. Documentul definește oportunități egale pentru toți participanții, indiferent de convingerile lor, vârstă, sex, preferințe religioase, nivel de educație, statut social și naționalitate. Comunitatea încurajează o comunicare prietenoasă, empatia față de problemele altor participanți, acceptarea criticilor constructive și găsirea celor mai bune soluții pentru întreaga comunitate. Nu sunt tolerate trolling-ul, manierele de comunicare ofensatoare, încercările de umilire, hărțuirea, violarea intimității, divulgarea informațiilor personale, precum și alte acțiuni care pot fi considerată nepotrivite în comunicarea profesională.

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