programmatūra · 6 min · 11.09.2026

SHA-256 pārejai Git trūkst 100 līdz 300 ielāpu, 3.0 plānots gada beigās

Git 2.56-rc0 iznāca 11. septembrī. Nākamais lielais laidiens pēc tā, visticamāk, būs Git 3.0, kurā jaunu repozitoriju noklusējuma jaucējfunkcija mainīsies no SHA-1 uz SHA-256. Izstrādātājs, kurš šo pāreju raksta gandrīz viens pats, jau ir pateicis, ka līdz plānotajam termiņam nepaspēs.

brian m. carlson Git izstrādātāju sarakstē nosauca atlikušā darba apjomu. SHA-1 un SHA-256 savietojamībai vajag 200 līdz 400 ielāpu, no kuriem aptuveni 100 ir gatavi. Ja grafiks paliek spēkā, katrā izstrādes ciklā viņam būtu jāuzraksta līdz 75 ielāpiem un jāiesūta 100.

SHA-256 savietojamības darbs vēl nav pabeigts. Mans vērtējums ir 200 līdz 400 ielāpi, no kuriem aptuveni 100 ir gatavi. Ja sākotnējais grafiks paliek spēkā, būtu jāuzraksta līdz 75 ielāpiem un katrā ciklā jāiesūta 100, kas bez papildu līdzstrādniekiem nav reāli.

Citāts ir no LWN.net pieraksta par Git sarakstes diskusiju. SHA-256 repozitorijus pats Git prot izveidot kopš 2.29 versijas 2020. gadā. Trūkst tieši savietojamības: iespējas strādāt ar SHA-1 repozitoriju no SHA-256 puses un otrādi. Bez tās jaunais noklusējums nozīmētu, ka svaigi izveidots repozitorijs nesarunājas ar lielāko daļu esošo serveru.

Iemesls pārejai ir SHA-1 vecums. 2017. gadā Google un Nīderlandes institūta CWI pētnieki parādīja pirmo praktisko SHA-1 sadursmi. Git kopš 2.13 versijas lieto sadursmju noteikšanas variantu sha1dc, kas šādi speciāli gatavotus objektus noraida. SHA-256 to pašu problēmu risina pie saknes.

Atsevišķs jautājums ir serveru puse. SHA-256 atbalsts forge platformās ir ļoti nevienmērīgs, tāpēc pat pabeigts savietojamības kods pats par sevi nenozīmē, ka lietotāji varēs pārslēgties. Dokumentācija par SHA-256 lietošanu, pēc carlson teiktā, gaidāma nākamajā laidienā.

Kas iekšā 2.56-rc0

Pats laidiena kandidāts ir mierīgs. ORT apvienošanas dzinējs, kas par noklusējumu kļuva 2.34 versijā, nostiprināts pret bojātiem koka objektiem, tam pievienoti vairāki zema līmeņa uzlabojumi. Swift kodam pievienoti userdiff šabloni, tāpēc diff izvadē tagad pareizi parādās atribūti, modifikatori, failable initializers un ģenerikas.

Repozitorijā ielikta projekta b4 konfigurācija. Rīks b4 kārto ielāpu sūtīšanu uz pasta sarakstu. Tagad to vairs nevajag konfigurēt katram līdzstrādniekam atsevišķi.

Mainītas arī līdzdalības vadlīnijas. Ielāpu autoriem tagad ieteikts nogaidīt vismaz vienu dienu pirms jaunas versijas sūtīšanas, lai recenzentiem paliek laiks atbildēt. Otrs punkts: plānoto atbildi vajag apspriest esošajā recenzijas pavedienā, nevis aizvērt sarunu ar jaunu ielāpu versiju.

Rust kļūst par būvēšanas prasību

Git 3.0 versijā Rust kompilators kļūs par obligātu būvēšanas prasību. Patrick Steinhardt iesūtīja ielāpu sēriju ar neobligātiem Rust moduļiem kā izmēģinājuma posmu, lai distributīvu uzturētāji paspētu sagatavoties. Viņš arī papildināja Git nepārtrauktās integrācijas infrastruktūru, lai tā testētu Rust daļas.

Rust kods jau parādās vairākās vietās. carlson daļu SHA-256 savietojamības koda raksta Rust valodā. Ezekiel Newren pārrakstīja xdiff bibliotēku, kas Git iekšienē veic pašu diff aprēķinu.

Projekta BreakingChanges dokuments atstāj atkāpšanās ceļu. Ja ietekme uz lejupējiem distributīviem izrādīsies pārāk liela, Rust prasību var atlikt uz kādu vēlāku 3.x laidienu.

reftable, main un safe.bareRepository

Trešā lielā izmaiņa ir atsauču glabāšana. Līdzšinējā files aizmugursistēma katru zaru un tagu glabā kā atsevišķu failu mapē .git/refs. Tās vietā par noklusējumu kļūs reftable. Dzēstās atsauces reftable atzīmē ar kapakmens ierakstiem un pēc katras rakstīšanas veic ģeometrisku sablīvēšanu, tāpēc glabātuve visu laiku paliek sakārtota. Formāts sākotnēji tapa Google vajadzībām repozitorijiem ar simtiem tūkstošu atsauču, taču ieguvumu jūt arī macOS un Windows lietotāji, kur daudzu mazu failu veidošana maksā dārgi.

Noklusējuma zara nosaukums 3.0 versijā mainīsies no master uz main. Diskusija par to Git sarakstē velkas gadiem. Līdz šim nosaukumu varēja mainīt tikai ar init.defaultBranch iestatījumu.

Mainīsies arī safe.bareRepository noklusējums no all uz explicit. Pēc izmaiņas Git atteiksies strādāt ar kailu repozitoriju, ja vien ceļš uz to nav norādīts tieši ar –git-dir. Tas aizver uzbrukuma ceļu, kur repozitorijā iekļauts kails apakšrepozitorijs ar savu konfigurāciju.

Vadlīnijas AI rakstītam kodam

Tajā pašā sarakstē uzturētājs Junio Hamano piedāvāja stingrāku redakciju noteikumiem par mašīnģenerētu kodu. Priekšlikums balstās QEMU projekta politikā, kas noraida iesūtījumus, kuri izskatās pēc automātiski ģenerēta teksta.

Strīdīgākais punkts ir Developer Certificate of Origin. Parakstot to, līdzstrādnieks apliecina, ka saprot iesūtītā darba izcelsmi un ka viņam ir tiesības to nodot projektam. Daļa sarakstes dalībnieku norāda, ka pie liela apjoma modeļa ģenerēta koda šis apliecinājums zaudē jēgu.

Kad gaidīt 3.0

Git laidieni iznāk aptuveni ik pēc trim mēnešiem. Pēc 2.56 nākamais cikls beigtos gada nogalē. Tieši tur pagaidām stāv atzīme par 3.0. Vai datums noturēsies, redzēs pēc tā, cik ielāpu carlson paspēs iesūtīt nākamajā ciklā. Visas apstiprinātās izmaiņas projekts uztur publiski failā Documentation/BreakingChanges.adoc.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no programmatūrasaistītie