Utgivelse av det distribuerte kildekontrollsystemet Git 2.22

Introdusert utgivelse av det distribuerte kildekontrollsystemet git 2.22.0. Git er et av de mest populære, pålitelige og høyytende versjonskontrollsystemene som gir fleksible ikke-lineære utviklingsverktøy basert på forgrening og sammenslåing av grener. For å sikre integriteten til historien og motstanden mot endringer i ettertid, brukes implisitt hashing av hele den tidligere historien i hver forpliktelse, det er også mulig å verifisere de digitale signaturene til utviklerne av individuelle tagger og forpliktelser.

Sammenlignet med forrige utgivelse ble 745 endringer akseptert i den nye versjonen, utarbeidet med deltagelse av 74 utviklere, hvorav 18 deltok i utviklingen for første gang. Den viktigste innovasjoner:

  • Tilgjengelig siden utgivelse 1.18, den nye commit-sett-migreringsmodusen "git rebase --rebase-merges" har erstattet det gamle alternativet "--preserve-merges", som nå er avviklet. "git rebase"-operasjonen brukes til å erstatte en serie av commits med en ny base commit, for eksempel for å flytte en enkelt gren som utvikler en ny funksjon til den nåværende tilstanden til master-grenen, som inkluderer rettelser lagt til etter grenen:

    o - o - o (min-funksjon)

    /

    o - o - o - o - o (mester)

    o - o - o (min-funksjon)

    /

    o - o - o - o - o (mester)

    For å bevare grenstrukturen i den migrerte grenen, kunne alternativet "--preserve-merges" tidligere brukes, som, når det ble kjørt i interaktiv modus (git rebase -i --preserve-merges ), tillot redigering av commit-historikken, men garanterer ikke fullstendig bevaring av depotstrukturen. Erstatningsmodusen "--rebase-merges" lar deg beholde strukturen til endringer i den migrerte grenen, samtidig som den gir et komplett sett med interaktive operasjoner, inkludert sletting, omgruppering og omdøping av forpliktelser.

    For eksempel "--rebase-merges" den lar re-push commits fra en separat gren til en nyere master gren mens du beholder grenstrukturen i den migrerte grenen, og gjør noen endringer i commit notatene mens du går.

  • Lagt til støtte for å lage en ny gren basert på resultatet av å bestemme sammenslåingsbasen til to andre grener (sammenslåingsbase, binding til en felles stamfar) ved å bruke "git branch new A...B" og "git checkout -b new A...B ”-konstruksjoner, der “A ...B” innebærer å definere sammenslåingsbasen mellom de to spesifiserte forpliktelsene, lik hvordan "git checkout A...B" skifter HEAD til basecommit og "diff A...B" viser endringene mellom commit "B" og den som deles med commit "A". » stamfar.

    For eksempel, når du arbeider med en separat my-feature-gren, kan den foreslåtte funksjonen brukes når du vil starte fra en annen gren, for eksempel fra samme sted i master-grenen som my-feature-grenen ble sjekket ut fra. Tidligere krevde dette manuelt å undersøke endringsloggen, noe som var upraktisk når det var en stor endringshistorikk, for så å gjøre "git merge-base master my-feature" for å beregne hashen til sammenslåingsbasen mellom master- og my-feature-grenene, og lage en ny gren i forhold til den felles stamfaren" git branch my-other-feature hash". I Git 2.22 kan du bruke syntaksen "git branch my-other-feature A...B" for å lage en gren i forhold til sammenslåingsbasen til to andre grener;

  • Lagt til alternativet "git branch --show-current" for å vise navnet på filialen hentet fra betalingsoperasjonen;
  • Lagt til alternativet "git checkout --no-overlay -- dir", som tillater, når du utfører utsjekkingsoperasjonen, å bringe innholdet i dir-katalogen til et skjema som fullt ut tilsvarer tilstanden til hovedgrenen. For eksempel, hvis det er en fil i den lokale kopien av dir-katalogen som ikke er i master-grenen, vil den som standard stå igjen når du kjører "git checkout master - dir", og når "--no-overlay " alternativet er spesifisert, det vil bli slettet;
  • "git diff"-kommandoen bruker et generisk alternativ-parsing-API for å forene alternativbehandling med andre git-verktøy. For eksempel, i "git diff" har alle alternativer nå sine antagonister tilgjengelig ("--function-context" og "--no-function-context");
  • Lagt til muligheten til å filtrere når du sender ut utvidede "git log"-tagger knyttet til commits ("trailer" - ytterligere informasjonsflagg, som Signed-off-by og Co-authored-by). Det er mulig å filtrere etiketter både etter nøkkel og verdi, for eksempel:
    "git log --pretty="%(trailers:key=Reviewed-by,valueonly)";

  • En ny sporingsmotor, Trace2, er lagt til, og tilbyr et mer fleksibelt og strukturert utdataformat. Trace2 lar deg samle telemetri om utførte operasjoner og ytelsesdata for mer detaljert analyse og feilsøking (behandleren er tilordnet av brukeren, ingen data sendes utenfor);
  • Gjorde "git bisect"-rapporten mer lesbar, som nå tydeligere fremhever problematiske forpliktelser og viser sammendragsstatistikk over endringer for hver fil (på nivået med antall endrede linjer);
  • Heuristikken for å oppdage navn på kataloger har blitt redesignet for å unngå falsk innstilling av omdøpsflagg. Når du er i tvil, er slike kataloger nå merket som motstridende;
  • En advarsel gis når du prøver å sette en tag til en annen tag, noe som som regel gjøres ved en feil og kan føre til at taggen settes på feil commit (for eksempel en konstruksjon som "git tag -f -m " oppdatert melding "my-tag1 my-tag2" vil resultere i at en tag blir opprettet på den gamle taggen, mens utvikleren forventet at den nye taggen skulle settes på commit pekt på av den gamle taggen);
  • Generering er aktivert for bitmap-repositories (diskstruktur "reachability bitmaps") som lagrer data om settene med objekter som er tilgjengelige for hver commit og lar deg raskt fastslå tilstedeværelsen av det underliggende objektet. Den spesifiserte strukturen reduserer utførelsestiden for datautvinningsoperasjoner (git fetch) betydelig.

Kilde: opennet.ru

Legg til en kommentar