Izdaja porazdeljenega sistema za nadzor vira Git 2.31

Porazdeljeni sistem za nadzor vira Git 2.31 je zdaj na voljo. Git je eden najbolj priljubljenih, zanesljivih in visoko zmogljivih sistemov za nadzor različic, ki zagotavlja prilagodljiva nelinearna razvojna orodja, ki temeljijo na razvejanju in združevanju. Za zagotovitev celovitosti zgodovine in odpornosti proti retroaktivnim spremembam se v vsaki objavi uporablja implicitno zgoščevanje celotne prejšnje zgodovine, možno je tudi certificiranje posameznih oznak in potrditev z digitalnimi podpisi razvijalcev.

V primerjavi s prejšnjo izdajo je nova različica vsebovala 679 sprememb, pripravljenih s sodelovanjem 85 razvijalcev, od tega jih je 23 pri razvoju sodelovalo prvič. Glavne novosti:

  • Dodan je ukaz “git maintenance”, ki vam omogoča izvajanje občasnih del na sistemih, ki ne podpirajo cron. Na primer, z uporabo novega ukaza lahko poskrbite, da se postopek pakiranja repozitorija občasno izvaja, tako da vam ni treba čakati, da se repozitorij zaklene, ko se pakiranje samodejno izvaja med izvajanjem različnih ukazov. Ukaz “git maintenance” vam omogoča izvajanje optimizacij in operacij za vzdrževanje optimalne strukture repozitorija v ozadju, ne da bi blokirali interaktivno sejo - enkrat na uro se izvaja delo za proaktiven prenos svežih objektov iz oddaljenega repozitorija in posodobitev datoteko z grafom objave, postopek pakiranja repozitorija pa se začne vsako noč.
  • Dodana podpora za vzdrževanje obratnega indeksa (revindex) na disku za datoteke paketa. Spomnimo se, da Git shranjuje vse podatke v obliki objektov, ki se nahajajo v ločenih datotekah. Za povečanje učinkovitosti dela z repozitorijem so predmeti dodatno nameščeni v paketnih datotekah, v katerih so informacije predstavljene v obliki toka objektov, ki si sledijo (podoben format se uporablja pri prenosu objektov z git fetch in git push ukazi). Za vsako datoteko paketa se ustvari indeksna datoteka (.idx), ki vam omogoča, da zelo hitro določite odmik v datoteki paketa, na katerem je shranjen dani objekt z uporabo identifikatorja objekta. Povratni indeks (.rev), uveden v Git 2.31, je namenjen optimizaciji postopka določanja identifikatorja objekta iz informacij o umestitvi predmeta v datoteko paketa.

    Prej se je taka pretvorba izvajala sproti med razčlenjevanjem datoteke paketa in je bila shranjena samo v pomnilniku, kar ni omogočalo ponovne uporabe podobnih indeksov in je bilo treba indeks generirati vsakič. Operacija gradnje indeksa se zmanjša na sestavo niza parov objekt-položaj in njegovo razvrščanje po položaju, kar lahko traja dolgo časa za velike paketne datoteke.

    Na primer, operacija za prikaz vsebine objektov, ki uporablja neposredni indeks, je bila 62-krat hitrejša od operacije za prikaz velikosti objektov, za katere podatki o položaju do objekta niso bili indeksirani. Po uporabi obratnega indeksa so te operacije začele trajati približno enako časa. Povratni indeksi vam prav tako omogočajo, da pospešite operacije pošiljanja objektov pri izvajanju ukazov pridobivanja in potiskanja z neposrednim prenosom že pripravljenih podatkov z diska. Privzeto se povratni indeksi ne ustvarijo; če jih želite ustvariti, morate omogočiti nastavitev »git config pack.writeReverseIndex true« in nato zapakirati repozitorij z ukazom »git repack -Ad«.

  • Dodane optimizacije zmogljivosti na podlagi videza v formatu datoteke commit-graph, ki se uporablja za optimizacijo dostopa do informacij o odobritvah, novi podatki o številki generacije objave, ki se lahko uporabijo za pospešitev dodatnih operacij z odobritvami.
  • Dodane možnosti za ponovno definiranje imena glavne veje, ki se privzeto uporablja v novih repozitorijih (nastavitev init.defaultBranch). Ko dostopa do zunanjih repozitorijev, poskuša git preveriti vejo, na katero kaže HEAD, tj. če zunanji strežnik privzeto uporablja vejo "main", potem bo operacija "git clone" poskušala lokalno odjaviti "main". Git 2.31 zdaj podpira to vrsto prevzema za prazna skladišča. Na primer, pri lokalnem kloniranju novega repozitorija, preden mu dodate prve popravke, bo lokalna kopija zdaj vsebovala privzeto ime navzgor, nastavljeno na zunanjem strežniku.
  • Ukazu "git rev-list" je bila dodana možnost --disk-usage za zagotovitev povzetka velikosti predmetov.
  • V pričakovanju prihajajoče spremembe ozadja združevanja je bilo zaznavanje preimenovanja znatno optimizirano.
  • Podpora za podedovano knjižnico regularnih izrazov PCRE1 je bila ukinjena.
  • Možno je prisilno prepovedati uporabo skrajšanih povezav, ne glede na algoritem zgoščevanja. Prepoved omogočite tako, da parametru core.abbrev dodelite vrednost »ne«.
  • Dodana možnost »--path-format=(absolute|relative)« v ukaz »git rev-parse«, da izrecno določite, ali naj se prikažejo relativne ali absolutne poti.
  • Skripti za dokončanje Bash olajšajo dodajanje pravil za dokončanje za lastne podukaze "git".
  • Dodana možnost --stdin ukazu "git bundle" za branje sklicev iz standardnega vhodnega toka.
  • Ukazu "git log" je bila dodana nova možnost: "--diff-merges=" "
  • Dodana možnost »--deduplicatecan« ukazu »git ls-files« za odpravo podvojenega izpisa.
  • Dodane nove maske za izključitev obsega potrditev - " ^!" In " ^- "
  • Dodani možnosti »--left-only« in »--right-only« ukazu »git range-diff« za prikaz samo ene strani obsega, ki se primerja.
  • Dodane možnosti --skip-to= ukazoma "git diff" in "git log". " in "—rotate-to= » za preskok ali pomik na konec začetnih poti.
  • Dodana možnost "--skip-to=" ukazu "git difftool". » za nadaljevanje prekinjene seje z naključne poti.
  • Kodeks ravnanja, ki opredeljuje osnovna načela za reševanje konfliktnih situacij med razvijalci, je posodobljen na različico 2.0 (prej je bila uporabljena različica 1.4).

    Vir: opennet.ru

Dodaj komentar