Izdanje sustava za upravljanje izvornih kodova Git 2.37

Predstavljeno je izdanje distribuiranog sustava za upravljanje izvornih kodova Git 2.37. Git je jedan od najpopularnijih, najpouzdanijih i visokoučinkovitih sustava za upravljanje verzijama, koji pruža fleksibilne alate za nelinearni razvoj, temeljen na grananju i spajanju grana. Za očuvanje cjelovitosti povijesti i otpornosti na promjene "unatrag" koristi se implicitno hashiranje cijele prethodne povijesti u svakom commit-u, a također je moguće potvrditi digitalnim potpisima pojedinih oznaka i commit-a.

U usporedbi s prethodnim izdanjem, u novu verziju prihvaćeno je 395 promjena, pripremljenih uz sudjelovanje 75 programera, od kojih je 20 prvi put sudjelovalo u razvoju. Glavne novine:

  • Pripremljen je za široku upotrebu mehanizam parcijalnih indeksa (sparse index), koji obuhvaća samo dio repozitorija. Parcijalni indeksi omogućuju povećanje performansi i uštedu prostora u repozitorijima u kojima se provode operacije parcijalnog kloniranja (sparse-checkout) ili radi s nepotpunom kopijom repozitorija. U novom izdanju završeni su radovi na integraciji parcijalnih indeksa u naredbe "git show", "git sparse-checkout" i "git stash". Najveće poboljšanje performansi od korištenja parcijalnih indeksa primjećuje se u naredbi "git stash", čija je brzina izvršavanja u nekim situacijama porasla do 80%.
  • Zasnovan je nov mehanizem „cruft packs“ za pakiranje nedosegljivih objektov, na katere v repozitoriju ni povezav (na njih ne kažejo niti veje niti oznake). Nedosegljivi objekti jih odstrani zbiralnik odpadkov, vendar ostanejo v repozitoriju določen čas pred izbrisom, da se preprečijo stanja dirke. Za sledenje obdobju obstoja nedosegljivih objektov je potrebna vezava oznak na njih z časom spremembe takšnih objektov, kar ne omogoča shranjevanja v enem pack-datoteki, v kateri imajo vsi objekti skupen čas spremembe. Prejšnje shranjevanje vsakega objekta v ločeno datoteko je povzročalo težave ob prisotnosti velikega števila svežih nedosegljivih objektov, ki še niso podvrženi brisanju. Predlagani mehanizem „cruft packs“ omogoča shranjevanje vseh nedosegljivih objektov v eni pack-datoteki, podatke o času spremembe posameznega objekta pa odraža v ločeni tabeli, shranjeni v datoteki z razširitvijo „.mtimes“.
  • Za Windows in macOS je zasnovan vgrajen mehanizem za sledenje spremembam v datotečnem sistemu, ki omogoča, da se pri izvajanju operacij, kot je „git status“, izognemo pregledu celotnega delovnega imenika. Prej so za sledenje spremembam prek hook-ov lahko bile vključene zunanje naprave za sledenje spremembam v datotečnem sistemu, kot je Watchman, vendar je to zahtevalo namestitev dodatnih programov in nastavitev. Zdaj je ta funkcionalnost vgrajena in jo je mogoče vključiti z ukazom „git config core.fsmonitor true“.
  • V ukazu „git sparse-checkout“ je razglašena zastarela podpora alternativnemu načinu „—cone“ za metodo določanja predlogov za delno kloniranje, ki omogoča, da ob določanju dela repozitorija, ki spada pod operacijo kloniranja, našteje posamezne datoteke z uporabo sintakse „.gitignore“, kar ne omogoča optimizacije delnih indeksov.
  • Povečana fleksibilnost prilagodbe poziva fsync() za prebacivanje promjena na disk. U parametar „core.fsyncMethod“ dodana je podrška za strategiju sinkronizacije „batch“, koja omogućuje brži rad prilikom zapisivanja velikog broja pojedinačnih datoteka skupljanjem promjena u predmemoriji povratnog zapisa, koja se prebacuje jednim pozivom fsync(). U izvedenom testu, u kojem je tim „git add“ dodano 500 datoteka, test s novom opcijom trajao je 0.15 sekundi, dok je pozivanje fsync() za svaku datoteku trajalo 1.88 sekundi, a bez korištenja fsync — 0.06 sekundi.
  • U naredbe za obilazak grana, kao što su „git log“ i „git rev-list“, dodana je opcija „—since-as-filter=X“, koja omogućuje filtriranje informacija o commitima čije je vrijeme kreiranja starije od „X“. Za razliku od opcije „—since“, nova opcija implementirana je kao filter, ne zaustavljajući pretraživanje nakon prvog commita koji je stariji od zadanog vremena.
  • U naredbi „git remote“, prilikom korištenja oznake „-v“, osigurana je ispravna informacija o djelomičnim klonovima repozitorija.
  • Dodana je postavka „transfer.credentialsInUrl“, koja može primati vrijednosti „warn“, „die“ i „allow“. U slučaju da su u parametru „remote..url“ navedeni vjerodajni podaci u otvorenom tekstu, pokušaj izvršavanja operacija „fetch“ ili „push“ bit će prekinut greškom ako postavka „transfer.credentialsInUrl“ prima vrijednost „die“, ili upozorenjem ako je postavljena vrijednost „warn“.
  • Zadano je aktivirana nova implementacija interaktivnog moda naredbe „git add -i“, koja je prepisana s Perla na C.

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