Frigivelse af distribueret kildekontrolsystem Git 2.26

Ledig frigivelse af et distribueret kildekontrolsystem Git 2.26.0. Git er et af de mest populære, pålidelige og højtydende versionskontrolsystemer, der giver fleksible ikke-lineære udviklingsværktøjer baseret på forgrening og sammensmeltning. For at sikre historiens integritet og modstand mod tilbagevirkende ændringer, anvendes implicit hashing af hele den tidligere historie i hver commit; det er også muligt at certificere individuelle tags og commits med digitale signaturer fra udviklerne.

Sammenlignet med den tidligere udgivelse indeholdt den nye version 504 ændringer, udarbejdet med deltagelse af 64 udviklere, hvoraf 12 deltog i udviklingen for første gang. The main innovationer:

  • Standarden er blevet skiftet til anden version Git kommunikationsprotokol, som bruges når en klient fjernopretter forbindelse til en Git server. Den anden version af protokollen er kendt for at give mulighed for at filtrere grene og tags på serversiden, hvilket returnerer en forkortet liste over links til klienten. Tidligere ville enhver pull-kommando altid sende klienten den fulde liste over referencer i hele lageret, selv når klienten kun opdaterede én gren eller tjekkede, at deres kopi af lageret var opdateret. En anden bemærkelsesværdig innovation er evnen til at tilføje nye muligheder til protokollen, efterhånden som ny funktionalitet bliver tilgængelig i værktøjskassen. Klientkoden forbliver kompatibel med den gamle protokol og kan fortsætte med at arbejde med både nye og gamle servere, og falder automatisk tilbage til den første version, hvis serveren ikke understøtter den anden.
  • Indstillingen "-show-scope" er blevet tilføjet til kommandoen "git config", hvilket gør det nemmere at identificere det sted, hvor visse indstillinger er defineret. Git giver dig mulighed for at definere indstillinger forskellige steder: i depotet (.git/info/config), i brugermappen (~/.gitconfig), i den systemdækkende konfigurationsfil (/etc/gitconfig) og gennem kommandoen linjeindstillinger og miljøvariabler. Når du udfører "git config" er det ret svært at forstå, hvor præcis den ønskede indstilling er defineret. For at løse dette problem var "--show-origin" muligheden tilgængelig, men den viser kun stien til filen, hvori indstillingen er defineret, hvilket er nyttigt, hvis du har til hensigt at redigere filen, men det hjælper ikke, hvis du nødt til at ændre værdien gennem "git config" ved at bruge indstillingerne "--system", "--global" eller "-local". Den nye indstilling "--show-scope" viser variabeldefinitionskonteksten og kan bruges 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=aktuel
    […] local file:.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.farveflyttet almindelig

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

  • I indbindingsindstillingerne legitimationsoplysninger Brug af masker i URL'er er tilladt. Alle HTTP-indstillinger og legitimationsoplysninger i Git kan indstilles både for alle forbindelser (http.extraHeader, credential.helper) og for URL-baserede forbindelser (credential.https://example.com.helper, credential.https: //example. com.helper). Indtil nu var jokertegn såsom *.example.com kun tilladt for HTTP-indstillinger, men blev ikke understøttet til binding af legitimationsoplysninger. I Git 2.26 er disse forskelle elimineret, og for for eksempel at binde et brugernavn til alle underdomæner kan du nu angive:

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

    brugernavn = ttaylorr

  • Udvidelsen af ​​eksperimentel støtte til delvis kloning (delkloner) fortsætter, så du kun kan overføre en del af dataene og arbejde med en ufuldstændig kopi af depotet. Den nye udgivelse tilføjer en ny kommando "git sparse-checkout add", som giver dig mulighed for at tilføje individuelle mapper for at anvende "checkout"-operationen til kun en del af arbejdstræet, i stedet for at liste alle sådanne mapper på én gang gennem kommandoen "git sparse-checkout sæt" (du kan tilføje en efter en en mappe uden at genspecificere hele listen hver gang).
    For for eksempel at klone et git/git-lager uden at begå klatter, begrænse udtjekning til kun rodmappen af ​​arbejdskopien og separat markering af udtjekning for "t"- og "Dokumentation"-mapperne, kan du angive:

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

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

    $ git sparse-checkout add t
    ....
    $ git sparse-checkout tilføje dokumentation
    ....
    $ git sparse-checkout liste
    Dokumentation
    t

  • Ydeevnen af ​​"git grep"-kommandoen, der bruges til at søge i både det aktuelle indhold af depotet og historiske revisioner, er blevet væsentligt forbedret. For at fremskynde søgningen var det muligt at scanne indholdet af arbejdstræet ved hjælp af flere tråde ("git grep -threads"), men søgningen i historiske revisioner var enkelttrådet. Nu er denne begrænsning blevet fjernet ved at implementere muligheden for at parallelisere læseoperationer fra objektlageret. Som standard er antallet af tråde sat lig med antallet af CPU-kerner, hvilket i de fleste tilfælde nu ikke kræver eksplicit indstilling af "-tråde".
  • Tilføjet understøttelse af autofuldførelse af input af underkommandoer, stier, links og andre argumenter for "git worktree" kommandoen, som giver dig mulighed for at arbejde med flere arbejdskopier af depotet.
  • Tilføjet understøttelse af lyse farver, der har ANSI escape-sekvenser. For eksempel kan du i indstillingerne for fremhævede farver "git config -color" eller "git diff -color-moved" angive "%C(brightblue)" via "--format"-indstillingen for lyse blå.
  • Tilføjet ny version af script fsmonitor-vagtmand, hvilket giver integration med mekanismen Facebook Watchman for at fremskynde sporing af filændringer og fremkomsten af ​​nye filer. Efter opdatering er git påkrævet erstatte krog i depotet.
  • Tilføjede optimeringer for at fremskynde delvise kloner ved brug af bitmaps
    (bitmap-maskineri) for at undgå en fuldstændig søgning af alle objekter, når outputtet filtreres. Kontrol af klatter (—filter=blob:none og —filter=blob:limit=n) under delvis kloning udføres nu
    væsentligt hurtigere. GitHub annoncerede patches med disse optimeringer og eksperimentel støtte til delvis kloning.

  • Kommandoen "git rebase" er blevet flyttet til en anden backend ved at bruge standard 'merge'-mekanismen (tidligere brugt til "rebase -i") i stedet for 'patch+apply'. Backends adskiller sig på nogle små måder, for eksempel efter at have fortsat en operation efter at have løst en konflikt (git rebase --continue), tilbyder den nye backend at redigere commit-meddelelsen, mens den gamle blot brugte den gamle besked. For at vende tilbage til den gamle adfærd kan du bruge "--apply"-indstillingen eller indstille 'rebase.backend'-konfigurationsvariablen til 'apply'.
  • Et eksempel på en handler for godkendelsesparametre specificeret via .netrc er blevet reduceret til en form, der er egnet til brug uden for boksen.
  • Tilføjet gpg.minTrustLevel-indstillingen for at indstille det mindste tillidsniveau for forskellige elementer, der udfører verifikation af digital signatur.
  • Tilføjet "--pathspec-from-file" mulighed for "git rm" og "git stash".
  • Forbedring af testsuiter fortsatte som forberedelse til overgangen til SHA-2 hashing-algoritmen i stedet for SHA-1.

Kilde: opennet.ru

Tilføj en kommentar