Izdanje sistema za upravljanje izvornih kodova Git 2.48

Objavljen je izdanak distribuiranog sustava upravljanja izvornih tekstova Git 2.48. Git se odlikuje visokom izvedbom i pruža alate za nelinearni razvoj, koji se temelje na grananju i spajanju grana. Za očuvanje cjelovitosti povijesti i otpornosti na promjene "unazad" koristi se implicitno heširanje cijele prethodne povijesti u svakom commitu, kao i potvrda digitalnim potpisima programera pojedinih tagova i commit-ova. Git kod se distribuira pod GPLv2+ licencom.

U usporedbi s prethodnim izdanjem, nova verzija sadrži 605 promjena, pripremljenih uz sudjelovanje 93 programera, od kojih 35 sudjeluje u razvoju prvi put. Glavne novosti:

  • Omogućena je izgradnja s korištenjem sustava za izgradnju Meson, osim GNU Make i CMake. Za izgradnju Gita sada se može koristiti naredba "meson setup build && ninja -C build". Napominje se da je Makefile, koji se koristi s GNU Make, narastao na 3887 redaka i nije tako jednostavan kao što bi se željelo. Alat Meson pojednostavljuje rad s sustavom izgradnje, praktičan je za višekratne platforme i čini izgradnju dostupnijom za novake ili programere bez iskustva s alatom Make. Prekid podrške za Make i CMake ne planira se u doglednoj budućnosti.
  • Dodane su opcije izgradnje koje omogućuju korištenje alternativnih implementacija heša SHA-1 pri izračunu kontrolnih suma, koje se koriste za provjeru cjelovitosti blokova podataka u pack datotekama. Izvedba izračuna kontrolnih suma je od velike važnosti, npr. za njihov izračun prilikom kloniranja repozitorija s jezgrom Linux troši se oko 78% procesorskog vremena. Zadana implementacija uključuje dodatne provjere kolizija i zaštitu od napada na SHA-1, kao što su SHAttered i Shambles. Takva zaštita, koja koristi dodatne resurse, ima smisla samo pri korištenju SHA-1 u kriptografskim svrhe i beskorisna je za provjeru cjelovitosti indeksnih podataka.

    Za izgradnju Gita s bržom implementacijom SHA-1, koja nije pogodna za kriptosustave, ponuđena je serija opcija *_UNSAFE, poput "OPENSSL_SHA1_UNSAFE". Na GitHubu je izgradnja s pojednostavljenim SHA-1 omogućila povećanje učinkovitosti operacija dohvata i kloniranja podataka za 10-13%.

  • Dodana je mogućnost korišćenja u timu "range-diff" opcije "--remerge-diff", koja omogućava prikazivanje razlika između zajedničkog rezultata spajanja i stvarnih podataka prikazanih u commit-u nakon obrade komande "merge". Kada se koristi opcija "--remerge-diff", razlike između rezolucija sukoba se ne dele po svakom roditeljskom ogranku, već se prikazuju zajedničke razlike između datoteke koja ima sukobe spajanja i datoteke u kojoj su sukobi rešen. U kontekstu komande "range-diff", nova opcija može biti korisna za poređenje skupova commit-a nakon premještanja sekvenice commit-a komandnom "rebase" sa opcijom "--rebase-merges".
  • Dodana je mogućnost pokretanja testnog seta Git uz uključivanje režima otkrivanja curenja memorije. Kako git pruža alate koji se završavaju nakon izvršenja pozvane funkcije, curenja memorije ranije nisu smatrana velikim problemom. Potreba za potpunim uklanjanjem curenja memorije postala je aktuelna nakon započinjanja rada na iznošenju unutrašnje funkcionalnosti u posebnu biblioteku, koja se može koristiti u dugotrajno radnim procesima.
  • Započelo je formiranje liste zastarelih režima i mogućnosti čiju podršku planiraju da prekinu u budućnosti. Pretpostavlja se da će uklanjanje zastarele funkcionalnosti nastupiti u izdanju Git 3.0, koje će sadržavati izmene koje krše unazadnu kompatibilnost.
  • Nastavljena je optimizacija rada tima "git for-each-ref", koji ispisuje listu referenci u repozitorijumu. Optimzacija, koja kombinuje obradnike za filtriranje referenci i formatiranje izlaza, sada se primenjuje ne samo za neuredan izlaz, već i kada je naznačena opcija "--sort".
  • Izboljšana je implementacija backend-a "reftable" z blokovnim shranjevanjem za učinkovito shranjevanje v repozitoriju povezav na veje in oznake. Reftable znatno pospeši iskanje, branje in pisanje v repozitorijih z zelo velikim številom povezav. V novi različici je prenehan dostop do nekaterih pomožnih API-jev, da bi se dodatno odstranila knjižnica libgit iz zbirnih odvisnosti. Uvedena je bila prilagodljiva obdelava napak, ki jih vrnejo funkcije dodeljevanja pomnilnika (pomanjkanje pomnilnika sedaj ne privede do nenadnega končanja dela). Pospešene so operacije ustvarjanja povezav in zmanjšana poraba pomnilnika.
  • Pri implementaciji delnega kloniranja so rešene težave, ki so povzročale cikle in poškodbe repozitorija po izvedbi ukaza "git gc".
  • Pri izvajanju ukaza "git fetch " v primeru, da na lokalnem sistemu ni "refs/remotes//HEAD" in obstaja veja na drugi strani, na katero se nanaša HEAD, se sedaj "refs/remotes//HEAD" preusmeri na to vejo. Za upravljanje sinhronizacije "refs/remotes//HEAD" z vrednostjo HEAD na drugi strani povezave je dodana nastavitev remote..followRemoteHEAD.
  • Dodana je nastavitev "remote..serverOption", ki je podobna možnosti ukazne vrstice "--serverOption=".
  • V ukazu "git rebase --rebase-merges" je po možnosti zagotovljena uporaba imen vej kot oznak.
  • V ukaze 'git notes add' in 'git notes append' je dodana zastavica '-e', ki odpre opombo v zunanjem besedilnem urejevalniku, določenem prek okoljske spremenljivke GIT_EDITOR.
  • Izboljšana je združljivost z GCC 15 in standardom C23.
  • Podpora za stare različice libcURL in Perla je prenehana.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster