Utgivelse av Git 2.35 kildekontrollsystem

Etter to måneder med utvikling har det distribuerte kildekontrollsystemet Git 2.35 blitt utgitt. Git er et av de mest populære, pålitelige og høyytende versjonskontrollsystemene, og gir fleksible 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 forpliktelse; det er også mulig å sertifisere individuelle tagger og forpliktelser med digitale signaturer fra utviklerne.

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

  • Mulighetene for å bruke SSH-nøkler til å signere Git-objekter digitalt er utvidet. For å begrense gyldighetsperioden til flere nøkler er det lagt til støtte for OpenSSH-direktivene “valid-before” og “valid-after”, som man kan sikre korrekt arbeid med signaturer med etter at nøkkelen er rotert av en av utviklerne. Før dette var det et problem med separasjonen av signaturer med den gamle og nye nøkkelen - hvis du sletter den gamle nøkkelen, vil det være umulig å verifisere signaturene laget med den, og hvis du forlater den, vil det fortsatt være mulig å opprette nye signaturer med den gamle nøkkelen, som allerede er erstattet av en annen nøkkel. Ved å bruke gyldig-før og gyldig-etter kan du skille omfanget av nøklene basert på tidspunktet signaturen ble opprettet.
  • I merge.conflictStyle-innstillingen, som lar deg velge modus for å vise informasjon om konflikter under en sammenslåing, har det dukket opp støtte for "zdiff3"-modusen, som flytter alle standardlinjer spesifisert i begynnelsen eller slutten av konflikten utenfor konflikten område, som gir mulighet for en mer kompakt presentasjon av informasjon.
  • “--stated”-modusen er lagt til “git stash”-kommandoen, som lar deg skjule bare endringer som er lagt til i indeksen, for eksempel i en situasjon når du må midlertidig utsette noen av de komplekse endringene for å først legg til det som allerede er klart og ta hånd om resten etter en stund. Modusen ligner på "git commit"-kommandoen, og skriver bare endringene som er plassert i indeksen, men i stedet for å lage en ny commit i "git stash —staged", lagres resultatet i det midlertidige stash-området. Når endringene er nødvendige, kan de tilbakestilles med kommandoen "git stash pop".
  • En ny formatspesifikasjoner er lagt til "git log"-kommandoen, "--format=%(describe)", som lar deg kombinere utdata fra "git log" med utdata fra "git describe"-kommandoen. Parametrene for "git describe" er spesifisert direkte inne i spesifikasjonen ("-format=%(describe:match= ,ekskluder= )"), der du også kan inkludere forkortede tagger ("—format=%(describe:tags= )") og konfigurer antall heksadesimale tegn for å identifisere objekter ("—format=%(describe:abbrev= )"). For eksempel, for å liste opp de siste 8 commitene hvis tagger ikke har en utgivelseskandidat-tag, og spesifisere 8-tegns identifikatorer, kan du bruke kommandoen: $ git log -8 —format='%(describe:exclude=*-rc *,abbrev=13 )' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643.abg-2b95d b94bd056 bbc2.34.1f642 v56-95-gffb8f7d v2.34.1-203- gdf9c2980902adeb2.34.1 v640-3-g41b212a2.34.1
  • User.signingKey-innstillingen støtter nå nye typer nøkler som ikke er begrenset til "ssh-"-typen og spesifiserer hele filbanen til nøkkelen. Alternative typer spesifiseres ved å bruke "key::"-prefikset, for eksempel "key::ecdsa-sha2-nistp256" for ECDSA-nøkler.
  • Hastigheten for å generere en liste over endringer i «—histogram»-modusen, samt når du bruker «—color-moved-ws»-alternativet, som kontrollerer uthevingen av mellomrom i en fargeforskjell, har blitt merkbart økt.
  • "git jump"-kommandoen, som brukes til å gi Vim informasjon om det nøyaktige hoppet til ønsket posisjon i en fil når du analyserer flettekonflikter, ser på diff eller utfører en søkeoperasjon, gir muligheten til å begrense flettekonfliktene som dekkes. For å begrense operasjoner til bare "foo"-katalogen, kan du for eksempel spesifisere "git jump merge - foo", og for å ekskludere "Documentation"-katalogen fra behandling - "git jump merge - ':^Documentation'"
  • Det er arbeidet med å standardisere bruken av typen "size_t" i stedet for "unsigned long" for verdier som representerer størrelsen på objekter, noe som gjorde det mulig å bruke "clean" og "smudge"-filtre med filer større enn 4 GB på alle plattformer, inkludert plattformer med LLP64-datamodellen , typen "unsigned long" som er begrenset til 4 byte.
  • Alternativet "-empty=(stop|drop|keep)" er lagt til "git am"-kommandoen, som lar deg velge virkemåten for tomme meldinger som ikke inneholder patcher når du analyserer patcher fra postboksen. Verdien "stopp" vil avslutte hele patchoperasjonen, "drop" vil hoppe over en tom patch, og "keep" vil skape en tom commit.
  • Lagt til støtte for delvise indekser (sparse index) til kommandoene "git reset", "git diff", "git blame", "git fetch", "git pull" og "git ls-files" for å forbedre ytelsen og spare plass i repositories , der delvise kloningsoperasjoner (sparse-checkout) utføres.
  • Kommandoen "git sparse-checkout init" er avviklet og bør erstattes av "git sparse-checkout set".
  • Lagt til innledende implementering av en ny "refterbar" backend for lagring av referanser som grener og tagger i depotet. Den nye bakenden bruker blokklagring som brukes av JGit-prosjektet og er optimalisert for lagring av svært store antall referanser. Backend er ennå ikke integrert med refs-systemet og er ikke klar for praktisk bruk.
  • Fargepaletten til "git grep"-kommandoen har blitt justert for å matche GNU grep-verktøyet.

Kilde: opennet.ru

Legg til en kommentar