Git 2.29.0 arrin me mbështetje eksperimentale për SHA-256, përmirësime dhe më shumë

Git është një nga sistemet më të njohura të kontrollit të versionit, i besueshëm dhe me performancë të lartë, duke siguruar mjete fleksibël të zhvillimit jo-linear të bazuar në degëzimin dhe bashkimin. Për të siguruar integritetin e historisë dhe rezistencën ndaj ndryshimeve "në mënyrë retroaktive", përdorimi i fshehtë i të gjithë historisë së mëparshme përdoret në secilin kryerje, është gjithashtu e mundur të vërtetohet me nënshkrime dixhitale të etiketave individuale dhe zhvilluesve të angazhimeve.

kohët e fundit u njoftua versioni i tij i ri "Git 2.29.0" dhe krahasuar me versionin e mëparshëm, 627 ndryshime u miratuan në versionin e ri, prodhuar me pjesëmarrjen e 89 zhvilluesve, nga të cilët 24 morën pjesë për herë të parë në zhvillim.

Git 2.29.0 Karakteristikat kryesore të reja

Në këtë version të ri, përfshin një mundësi eksperimentale për të përdorur algoritmin e shkëputjes SHA-256 në vend të SHA-1 të kompromentuar kur shkruajnë objekte në depo. Hasha gjenerohet nga përmbajtja e secilit objekt në Git dhe është identifikuesi i tij unik. Çdo ndryshim në të dhënat ose kokat e një objekti çon në një ndryshim në identifikuesin e tij. Ndodhja e përplasjeve në algoritmin e hashit teorikisht nuk përjashton formimin e dy grupeve të të dhënave të ndryshme me një hash që rezulton.

Për fat të keq, algoritmi SHA-1 rezultoi se nuk ishte rezistent ndaj formimit të përplasjes artificiale, por për kryerjen e sulmeve reale për zëvendësimin e objekteve në Git me anë të manipulimit të përplasjeve SHA-1 e pamundur, pasi që për të anuluar një objekt të ndarë është e nevojshme që objekti i anuluar të përmbajë tashmë një model përplasjeje, d.m.th. një bllok arbitrar nuk mund të zëvendësohet.

Meqenëse çdo përplasje kërkon burime të mëdha për të llogaritur, modelet e llogaritura tashmë janë të njohura të cilat çojnë në përplasje dhe më herët në Git u shtua një kontroll për përpjekjet për t'i përdorur ato në objekte.

Në këtë fazë të zhvillimit, ju mund të zgjidhni vetëm midis SHA-1 dhe SHA-256, por deri më tani nuk mund të kombinoni hashe të ndryshëm në një depo në të njëjtën kohë. Gjithashtu, që tani, asnjë ofrues i Git, përfshirë GitHub, nuk mbështet depot me hasha SHA-256. Ka plane për të shtuar veçoritë e transportueshmërisë në të ardhmen.

Një tjetër ndryshim në këtë version të ri është në komandë "Git fetch" dhe "git push" atyre që shton mbështetje për specifikat ekskluzive të lidhjeve (refspec), zgjeron të drejtat e lidhjes së përputhjes midis degëve në depot lokale dhe të jashtme. Përjashtimi i specifikimeve të referencës mund të jetë i dobishëm në situata kur ju duhet jo vetëm të zgjidhni, por edhe të përjashtoni disa degë nga harta. Për shembull, kur ishte e nevojshme të kontrolloheshin të gjitha degët "refs / Heads / *", përveç njërës "Refs / Heads / ref-to-përjashto", së pari ishte e nevojshme të specifikohej një listë e plotë, duke përfshirë në mënyrë të qartë secilën degë.

Fusha të reja janë shtuar në "git for-each-ref" i cili mund të specifikohet me opsionin "-format", përveç emrit, llojit dhe ID të objektit. Për shembull, përmbajtja e fushave të shtuara: madhësia, tema: pastrimi dhe modifikuesi: e shkurtër për të shfaqur identifikues të shkurtër të objektit. Shtë gjithashtu e lejuar të specifikohen argumente të shumtë "- të shkrirë" dhe "- jo të shkrirë" për të filtruar lidhjet.

Kur ndodh një konflikt gjatë një operacioni "bashkimi i git", kryefjala e mesazhit kryer tani është në kllapa për tu ndarë më qartë të dhënat e konfirmimit nga mesazhet diagnostike Git.

Shtuar një cilësim të ri "bashko.renormalize", kur vendoset, operacionet e check-out dhe check-in kryhen për secilën fazë të një kombinimi tre-drejtësh.

Versioni i dytë i protokollit të komunikimit Git është rikthyer përsëri, i cili ishte çaktivizuar në versionin 2.27, dhe përdoret kur një klient lidhet në distancë me një server Git. Gabimi që shkakton çështje të stabilitetit është diagnostikuar dhe rregulluar.

Opsioni "–parë-prindi" është shtuar në komandën "git bisect"përdoret për të identifikuar rishikimin në të cilin ndodhi një ndryshim regresiv, për të ndryshuar zgjedhjen e angazhimeve që kalojnë midis rishikimit të njohur të punës dhe rishikimit në të cilin ka ndodhur çështja. Nëse specifikoni "- i pari prind", llogariten vetëm angazhimet në degën e bashkuar, duke injoruar vetë angazhimin e bashkimit.

Përmirësimi i efikasitetit të komandës së brendshme "git index-pack" Përdoret kur ekzekutohet "git push" ose "git fetch" kur paralelizohet paketimi i një indeksi në sistemet multi-core.

Shtoi cilësimin "merge.suppressDest", i cili kontrollon shtimin e frazës "in $ dest" në "Merge $ upstream into $ dest" mesazhe të lëshuara kur degët bashkohen (më parë, fraza "në $ dest" nuk po tregonte për degën kryesore si parazgjedhje).

Rregulluar një dobësi në backend "kontributi / mw-në-git" (nuk është ndërtuar si parazgjedhje) për të shtyrë dhe për të marrë të dhëna nga MediaWiki. Problemi lejoi të organizonte ekzekutimin e kodit kur hyn në një shembull të MediaWiki që ishte nën kontrollin e një sulmuesi.

Më në fund, nëse doni të dini më shumë rreth kësaj, mund të kontrolloni detajet Në lidhjen vijuese.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.