Utgivelse av det distribuerte kildekontrollsystemet Git 2.26

Tilgjengelig utgivelse av det distribuerte kildekontrollsystemet git 2.26.0. 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 ble 504 endringer akseptert i den nye versjonen, utarbeidet med deltagelse av 64 utviklere, hvorav 12 deltok i utviklingen for første gang. Den viktigste innovasjoner:

  • Standarden er byttet til andre versjon Git kommunikasjonsprotokoll, som brukes når en klient eksternt kobler til en Git-server. Den andre versjonen av protokollen er kjent for å gi muligheten til å filtrere grener og tagger på serversiden, og returnere en forkortet liste over lenker til klienten. Tidligere ville enhver pull-kommando alltid sende klienten den fullstendige listen over referanser i hele depotet, selv når klienten bare oppdaterte én gren eller sjekket at kopien av depotet var oppdatert. En annen bemerkelsesverdig innovasjon er muligheten til å legge til nye funksjoner til protokollen etter hvert som ny funksjonalitet blir tilgjengelig i verktøysettet. Klientkoden forblir kompatibel med den gamle protokollen og kan fortsette å fungere med både nye og gamle servere, og faller automatisk tilbake til den første versjonen hvis serveren ikke støtter den andre.
  • Alternativet "-show-scope" er lagt til kommandoen "git config", noe som gjør det lettere å identifisere stedet der visse innstillinger er definert. Git lar deg definere innstillinger på forskjellige steder: i depotet (.git/info/config), i brukerkatalogen (~/.gitconfig), i den systemomfattende konfigurasjonsfilen (/etc/gitconfig), og gjennom kommandoen linjealternativer og miljøvariabler. Når du kjører "git config" er det ganske vanskelig å forstå hvor nøyaktig den ønskede innstillingen er definert. For å løse dette problemet var alternativet "--show-origin" tilgjengelig, men det viser bare banen til filen der innstillingen er definert, noe som er nyttig hvis du har tenkt å redigere filen, men det hjelper ikke hvis du må endre verdien gjennom "git config" ved å bruke alternativene "--system", "--global" eller "-local". Det nye alternativet "--show-scope" viser variabeldefinisjonskonteksten og kan brukes sammen med -show-origin:

    $ git --list --show-scope --show-origin
    global fil:/home/user/.gitconfig diff.interhunkcontext=1
    global fil:/home/user/.gitconfig push.default=gjeldende
    […] lokal fil:.git/config branch.master.remote=origin
    lokal fil:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    global diff.statgraphwidth 35
    lokal diff.fargeflyttet slett

    $ git config --global --unset diff.statgraphwidth

  • I innbindingsinnstillingene legitimasjon Bruk av masker i URL-er er tillatt. Eventuelle HTTP-innstillinger og legitimasjon i Git kan settes både for alle tilkoblinger (http.extraHeader, credential.helper) og for URL-baserte tilkoblinger (credential.https://example.com.helper, credential.https: //example. com.helper). Inntil nå var jokertegn som *.example.com bare tillatt for HTTP-innstillinger, men ble ikke støttet for legitimasjonsbinding. I Git 2.26 er disse forskjellene eliminert, og for å binde et brukernavn til alle underdomener kan du nå spesifisere:

    [legitimasjon "https://*.example.com"]

    brukernavn = ttaylorr

  • Utvidelsen av eksperimentell støtte for delvis kloning (delkloner) fortsetter, slik at du bare kan overføre deler av dataene og arbeide med en ufullstendig kopi av depotet. Den nye utgivelsen legger til en ny kommando "git sparse-checkout add", som lar deg legge til individuelle kataloger for å bruke "checkout"-operasjonen til bare en del av arbeidstreet, i stedet for å liste alle slike kataloger på en gang gjennom kommandoen "git sparse-checkout set" (du kan legge til en etter en en katalog, uten å spesifisere hele listen hver gang).
    For å for eksempel klone et git/git-depot uten å begå blobs, begrense utsjekking til bare rotkatalogen til arbeidskopien og merke utsjekking separat for "t"- og "Dokumentasjon"-katalogene, kan du spesifisere:

    $ git clone --filter=blob:none --sparse [e-postbeskyttet]:git/git.git

    $ cd git
    $ git sparse-checkout init --cone

    $ git sparse-checkout add t
    ....
    $ git sparse-checkout legg til Dokumentasjon
    ....
    $ git sparsom kasseliste
    Teknisk dokumentasjon
    t

  • Ytelsen til "git grep"-kommandoen, brukt til å søke i både det nåværende innholdet i depotet og historiske revisjoner, har blitt betydelig forbedret. For å øke hastigheten på søket, var det mulig å skanne innholdet i arbeidstreet ved å bruke flere tråder ("git grep -threads"), men søket i historiske revisjoner var enkeltråds. Nå er denne begrensningen fjernet ved å implementere muligheten til å parallellisere leseoperasjoner fra objektlageret. Som standard er antall tråder satt lik antall CPU-kjerner, som i de fleste tilfeller nå ikke krever eksplisitt innstilling av "-threads"-alternativet.
  • Lagt til støtte for autofullføring av inndata av underkommandoer, stier, lenker og andre argumenter for "git worktree"-kommandoen, som lar deg jobbe med flere arbeidskopier av depotet.
  • Lagt til støtte for lyse farger som har ANSI escape-sekvenser. For eksempel, i innstillingene for uthevingsfarger “git config –color” eller “git diff –color-moved” kan du spesifisere “%C(brightblue)” via “--format”-alternativet for knallblått.
  • Lagt til ny versjon av script fsmonitor-vaktmann, som gir integrasjon med mekanismen Facebook Watchman for å øke hastigheten på sporing av filendringer og utseendet til nye filer. Etter oppdatering kreves git erstatte hekte i depotet.
  • Lagt til optimaliseringer for å øke hastigheten på delvise kloner ved bruk av punktgrafikk
    (bitmap-maskineri) for å unngå et fullstendig søk av alle objekter ved filtrering av utdata. Kontroll av blobs (—filter=blob:none og —filter=blob:limit=n) under delvis kloning utføres nå
    betydelig raskere. GitHub annonserte patcher med disse optimaliseringene og eksperimentell støtte for delvis kloning.

  • "git rebase"-kommandoen har blitt flyttet til en annen backend, ved å bruke standard 'merge'-mekanisme (tidligere brukt for "rebase -i") i stedet for 'patch+apply'. Backends er forskjellige på noen små måter, for eksempel etter å ha fortsatt en operasjon etter å ha løst en konflikt (git rebase --continue), tilbyr den nye backend å redigere commit-meldingen, mens den gamle ganske enkelt brukte den gamle meldingen. For å gå tilbake til den gamle oppførselen kan du bruke "--apply"-alternativet eller sette konfigurasjonsvariabelen 'rebase.backend' til 'apply'.
  • Et eksempel på en behandler for autentiseringsparametere spesifisert via .netrc er redusert til et skjema som egner seg for bruk ut av boksen.
  • Lagt til gpg.minTrustLevel-innstillingen for å angi minimum tillitsnivå for ulike elementer som utfører verifisering av digital signatur.
  • Lagt til "--pathspec-from-file"-alternativet til "git rm" og "git stash".
  • Forbedring av testsuiter fortsatte som forberedelse til overgangen til SHA-2 hashing-algoritmen i stedet for SHA-1.

Kilde: opennet.ru

Legg til en kommentar