Git 2.29.0 vine cu suport experimental pentru SHA-256, îmbunătățiri și multe altele

Git este unul dintre cele mai populare sisteme de control al versiunilor, fiabile și de înaltă performanță, oferind instrumente de dezvoltare flexibile neliniare bazate pe ramificare și fuzionare. Pentru a asigura integritatea istoriei și rezistența la modificări „retroactiv”, se utilizează hashingul implicit al tuturor istoricelor anterioare în fiecare commit, este, de asemenea, posibil să se certifice cu semnături digitale ale etichetelor individuale și dezvoltatorilor de commit.

recent a fost anunțată noua sa versiune „Git 2.29.0” și în comparație cu versiunea anterioară, 627 modificări au fost adoptate în noua versiune, produs cu participarea a 89 de dezvoltatori, dintre care 24 au participat la dezvoltare pentru prima dată.

Git 2.29.0 Caracteristici noi cheie

În această nouă versiune, include o opțiune experimentală pentru a utiliza algoritmul de hash SHA-256 în locul compromisului SHA-1 când scrieți obiecte în depozit. Hash-ul este generat din conținutul fiecărui obiect din Git și este identificatorul său unic. Orice modificare a datelor sau antetelor unui obiect duce la o modificare a identificatorului său. Apariția coliziunilor în algoritmul de hash teoretic nu împiedică formarea a două seturi de date diferite cu un hash rezultat.

Din păcate, algoritmul SHA-1 s-a dovedit a nu fi rezistent la formarea artificială de coliziune, dar la comiterea unor atacuri reale la înlocuirea obiectelor din Git prin manipularea coliziunilor SHA-1, ceea ce este puțin probabil, deoarece pentru a anula un obiect separat este necesar ca obiectul anulat să conțină deja un model de coliziune, adică un arbitrar blocul nu poate fi înlocuit.

Deoarece fiecare coliziune necesită resurse de calcul enorme, șabloanele deja calculate sunt cunoscute ceea ce a dus la coliziuni și mai devreme în Git s-a adăugat o verificare a încercărilor de a le folosi pe obiecte.

În acest stadiu de dezvoltare, puteți alege doar între SHA-1 și SHA-256, dar până acum nu puteți combina hashuri diferite într-un depozit în același timp. De asemenea, de acum, niciun furnizor Git, inclusiv GitHub, nu acceptă depozite cu hash-uri SHA-256. Există planuri de a adăuga caracteristici de portabilitate în viitor.

O altă schimbare în această nouă versiune este în comandă „Git fetch” și „git push” celor care adaugă suport pentru specificațiile exclusive ale linkurilor (refspec), extinde drepturile de legătură potrivite între sucursale în depozite locale și externe. Excluderea specificațiilor de referință poate fi utilă în situațiile în care trebuie nu numai să selectați, ci și să excludeți anumite ramuri din mapare. De exemplu, atunci când a fost necesar să verificați toate ramurile „refs / heads / *”, cu excepția uneia „refs / heads / ref-to-exclude”, mai întâi a fost necesar să specificați o listă completă, incluzând în mod explicit fiecare ramură.

Au fost adăugate câmpuri noi la „git for-each-ref” care poate fi specificat cu opțiunea „-format”, pe lângă numele, tipul și id-ul obiectului. De exemplu, conținutul câmpurilor adăugate: dimensiune, subiect: igienizare și modificator: scurt pentru a afișa identificatorii de obiect scurți. De asemenea, este permisă specificarea mai multor argumente „–merged” și „–no-fusioned” pentru a filtra linkurile.

Când apare un conflict în timpul unei operațiuni de „fuziune git”, antetul mesajului commit este acum între paranteze pentru a se separa mai explicit datele de confirmare din mesajele de diagnostic Git.

A fost adăugată o nouă setare „merge.renormalize”, când sunt setate, operațiile de check-out și check-in sunt efectuate pentru fiecare etapă a unei combinații cu trei căi.

A doua versiune a protocolului de comunicare Git a fost redusă, care a fost dezactivată în versiunea 2.27 și este utilizată atunci când un client se conectează de la distanță la un server Git. Bug-ul care cauzează probleme de stabilitate a fost diagnosticat și remediat.

Opțiunea „–primul-părinte” a fost adăugată la comanda „git bisect”este folosit pentru a identifica revizuirea în care a avut loc o schimbare regresivă, pentru a modifica selecția comitetelor care trec între revizuirea de lucru cunoscută și revizuirea în care a apărut problema. Dacă specificați „–primul-părinte”, sunt luate în considerare numai validările de pe ramura fuzionată, ignorând însăși validarea de îmbinare.

Am îmbunătățit eficiența comenzii interne „git index-pack” Se folosește când se execută „git push” sau „git fetch” atunci când se paralelizează împachetarea indexului pe sistemele multi-core.

S-a adăugat setarea „merge.suppressDest”, care controlează adăugarea expresiei „în $ dest” la mesajele „Merge $ upstream în $ dest” emise atunci când ramurile sunt îmbinate (anterior, fraza „in $ dest” nu era care se afișează în mod implicit pentru ramura principală).

S-a remediat o vulnerabilitate în backend-ul „contrib / mw-to-git” (nu este construit în mod implicit) pentru a împinge și prelua date de pe MediaWiki. Problema a permis organizarea executării codului la accesarea unei instanțe MediaWiki aflate sub controlul unui atacator.

În cele din urmă, dacă doriți să aflați mai multe despre aceasta, puteți verifica detaliile În următorul link.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.