Utgivelse av Git 2.48 kildekontrollsystem

Det distribuerte kildekontrollsystemet Git 2.48 har blitt utgitt. Git er svært produktiv og tilbyr ikke-lineære utviklingsverktøy basert på forgrening og sammenslåing. For å sikre integriteten til historien og motstanden mot tilbakevirkende endringer, brukes implisitt hashing av hele den tidligere historien i hver commit, samt digitale signaturer fra utviklerne av individuelle koder og commits. Git-koden distribueres under GPLv2+-lisensen.

Sammenlignet med forrige utgivelse inneholder den nye versjonen 605 endringer utarbeidet med deltagelse av 93 utviklere, hvorav 35 deltar i utviklingen for første gang. Hovedinnovasjoner:

  • Implementerte muligheten til å bygge ved hjelp av Meson-byggesystemet, i tillegg til GNU Make og CMake. For å bygge Git kan du nå bruke kommandoen "meson setup build && ninja -C build". Det bemerkes at Makefilen som brukes når du bruker GNU Make har vokst til 3887 linjer og er ikke så enkel som vi ønsker. Mesons verktøysett forenkler byggesystemet, er praktisk for bygg på tvers av plattformer, og gjør bygg mer tilgjengelig for nybegynnere eller utviklere som ikke har noen erfaring med Make-verktøyet. Det er ingen planer om å avvikle støtten for Make og CMake i overskuelig fremtid.
  • Lagt til byggealternativer for å tillate bruk av alternative implementeringer av SHA-1-hashen ved beregning av sjekksummer som brukes til å verifisere integriteten til datablokker i pakkefiler. Ytelsen til sjekksumberegningen er av stor betydning, for eksempel brukes ca. 78 % av prosessortiden på beregningen deres ved kloning av et depot med Linux-kjernen. Standardimplementeringen inkluderer ekstra kollisjonskontroller og beskyttelse mot SHA-1-angrep som SHAttered og Shambles. Slik beskyttelse, som bruker ekstra ressurser, gir mening bare når du bruker SHA-1 til kryptografiske formål og er ubrukelig når du sjekker integriteten til indeksdata.

    For å bygge Git med en raskere SHA-1-implementering som ikke er egnet for kryptosystemer, foreslås en rekke *_UNSAFE-alternativer, for eksempel "OPENSSL_SHA1_UNSAFE". På GitHub tillot bygging med forenklet SHA-1 en 10-13 % økning i ytelsen til datainnhenting og kloningsoperasjoner.

  • Lagt til muligheten til å bruke "-remerge-diff"-alternativet i "range-diff"-kommandoen, som lar deg vise forskjellene mellom det totale sammenslåingsresultatet og de faktiske dataene som reflekteres i forpliktelsen etter å ha behandlet "merge"-kommandoen. Når du bruker alternativet "--remerge-diff", skilles ikke forskjellene mellom konfliktløsninger for hver overordnede gren, men de generelle forskjellene mellom filen som har flettekonflikter og filen som har konfliktene løst vises. I sammenheng med range-diff-kommandoen, kan et nytt alternativ være nyttig for å sammenligne sett med commits etter at en sekvens av commits har blitt migrert av rebase-kommandoen med --rebase-merges-alternativet.
  • Lagt til muligheten til å kjøre en Git-testpakke med minnelekkasjedeteksjon aktivert. Siden git gir verktøy som avsluttes etter at den kalte funksjonen er utført, ble ikke minnelekkasjer tidligere sett på som et stort problem. Behovet for å fullstendig eliminere minnelekkasjer ble påtrengende etter at arbeidet startet med å flytte intern funksjonalitet til et eget bibliotek, som kan brukes i langvarige prosesser.
  • En liste over foreldede moduser og funksjoner som er planlagt å bli avviklet i fremtiden har begynt å bli kompilert. Det forventes at utdatert funksjonalitet vil bli fjernet i Git 3.0-utgivelsen, som vil inkludere endringer som bryter bakoverkompatibiliteten.
  • Fortsatt optimalisering av "git for-each-ref"-kommandoen, som viser en liste over lenker i depotet. En optimalisering som kombinerer behandlere for lenkefiltrering og utdataformatering gjelder nå ikke bare usortert utdata, men også når alternativet "--sort" er spesifisert.
  • Forbedret implementering av den "reftable" backend med blokklagring for å effektivt lagre gren- og tagreferanser i depotet. Reftable lar deg gjøre søk, lesing og skriving betydelig raskere i repositories med et veldig stort antall lenker. Den nye versjonen slutter å kalle noen hjelpe-APIer for ytterligere å ekskludere libgit-biblioteket fra å være en byggeavhengighet. Implementert adaptiv håndtering av feil returnert av minneallokeringsfunksjoner (utilstrekkelig minne fører ikke lenger til krasj). Lenkeopprettingsoperasjoner har blitt fremskyndet og minneforbruket er redusert.
  • Den delvise kloningsimplementeringen har løst problemer som forårsaket repository looping og korrupsjon etter utførelse av "git gc"-kommandoen.
  • Når du utfører kommandoen "git fetch " hvis det ikke er noen "refs/remotes/" på det lokale systemet /HEAD" og tilstedeværelsen på den andre siden av grenen som HEAD refererer til, "refs/remotes/ /HEAD" omdirigerer nå til denne tråden. For å kontrollere synkronisering "refs/remotes/ /HEAD" med verdien HEAD på den andre siden av tilkoblingen, er fjerninnstillingen lagt til. .followRemoteHEAD".
  • Lagt til innstillingen "fjernkontroll. .serverOption" som ligner på kommandolinjealternativet "-serverOption= "
  • Kommandoen "git rebase --rebase-merges" sikrer at filialnavn brukes som etiketter når det er mulig.
  • La til et '-e'-flagg til kommandoene 'git notes add' og 'git notes append', som åpner notatet i et eksternt tekstredigeringsprogram spesifisert via GIT_EDITOR miljøvariabelen.
  • Forbedret kompatibilitet med GCC 15 og C23-standarden.
  • Støtte for eldre versjoner av libcURL og Perl er avviklet.

Kilde: opennet.ru

Legg til en kommentar