Release van gedistribueerd broncontrolesysteem Git 2.26

Beschikbaar release van een gedistribueerd broncontrolesysteem Git 2.26.0. Git is een van de meest populaire, betrouwbare en krachtige versiebeheersystemen en biedt flexibele, niet-lineaire ontwikkeltools op basis van vertakken en samenvoegen. Om de integriteit van de geschiedenis en weerstand tegen veranderingen met terugwerkende kracht te garanderen, wordt in elke commit impliciete hashing van de gehele voorgaande geschiedenis gebruikt; het is ook mogelijk om individuele tags en commits te certificeren met digitale handtekeningen van de ontwikkelaars.

Vergeleken met de vorige release bevatte de nieuwe versie 504 wijzigingen, voorbereid met de medewerking van 64 ontwikkelaars, van wie er 12 voor het eerst aan de ontwikkeling deelnamen. De belangrijkste innovaties:

  • Er is overgeschakeld naar de standaardinstelling tweede versie Git-communicatieprotocol, dat wordt gebruikt wanneer een client op afstand verbinding maakt met een Git-server. De tweede versie van het protocol is opmerkelijk omdat het de mogelijkheid biedt om vertakkingen en tags aan de serverzijde te filteren, waardoor een verkorte lijst met links naar de client wordt geretourneerd. Voorheen stuurde elk pull-commando de client altijd de volledige lijst met referenties in de gehele repository, zelfs als de client slechts één branch aan het updaten was of controleerde of zijn kopie van de repository up-to-date was. Een andere opmerkelijke innovatie is de mogelijkheid om nieuwe mogelijkheden aan het protocol toe te voegen zodra er nieuwe functionaliteit beschikbaar komt in de toolkit. De clientcode blijft compatibel met het oude protocol en kan blijven werken met zowel nieuwe als oude servers, waarbij automatisch wordt teruggevallen op de eerste versie als de server de tweede niet ondersteunt.
  • De “-show-scope” optie is toegevoegd aan het “git config” commando, waardoor het makkelijker wordt om de plaats te identificeren waar bepaalde instellingen zijn gedefinieerd. Met Git kun je instellingen op verschillende plaatsen definiëren: in de repository (.git/info/config), in de gebruikersmap (~/.gitconfig), in het systeembrede configuratiebestand (/etc/gitconfig), en via het commando lijnopties en omgevingsvariabelen. Bij het uitvoeren van “git config” is het vrij moeilijk om te begrijpen waar precies de gewenste instelling is gedefinieerd. Om dit probleem op te lossen was de optie “--show-origin” beschikbaar, maar deze toont alleen het pad naar het bestand waarin de instelling is gedefinieerd, wat handig is als u van plan bent het bestand te bewerken, maar niet helpt als u moet de waarde wijzigen via “git config” met behulp van de opties "--system", "--global" of "-local". De nieuwe optie "--show-scope" geeft de context van de definitie van de variabele weer en kan worden gebruikt in combinatie met -show-origin:

    $ git --list --show-scope --show-origin
    globaal bestand:/home/user/.gitconfig diff.interhunkcontext=1
    globaal bestand:/home/user/.gitconfig push.default=huidig
    […] local file:.git/config branch.master.remote=origin
    lokaal bestand:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    globale diff.statgraafbreedte 35
    lokaal diff.kleurverplaatst vlak

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

  • In de bindingsinstellingen referenties Het gebruik van maskers in URL’s is toegestaan. Alle HTTP-instellingen en inloggegevens in Git kunnen worden ingesteld voor zowel alle verbindingen (http.extraHeader, credential.helper) als voor URL-gebaseerde verbindingen (credential.https://example.com.helper, credential.https: //example. com.helper). Tot nu toe waren jokertekens zoals *.example.com alleen toegestaan ​​voor HTTP-instellingen, maar werden ze niet ondersteund voor het binden van referenties. In Git 2.26 zijn deze verschillen geëlimineerd en kun je nu bijvoorbeeld een gebruikersnaam aan alle subdomeinen koppelen:

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

    gebruikersnaam = ttaylorr

  • De uitbreiding van experimentele ondersteuning voor gedeeltelijk klonen (gedeeltelijke klonen) gaat door, waardoor u slechts een deel van de gegevens kunt overbrengen en met een onvolledige kopie van de repository kunt werken. De nieuwe release voegt een nieuw commando "git sparse-checkout add" toe, waarmee je individuele mappen kunt toevoegen om de "checkout" operatie op slechts een deel van de werkende boom toe te passen, in plaats van al dergelijke mappen in één keer op te sommen via het commando "git sparse-checkout set" (u kunt een map één voor één toevoegen, zonder elke keer de hele lijst opnieuw op te geven).
    Om bijvoorbeeld een git/git repository te klonen zonder blobs te committen, het uitchecken te beperken tot alleen de hoofdmap van de werkkopie, en het uitchecken afzonderlijk te markeren voor de mappen "t" en "Documentatie", zou je het volgende kunnen specificeren:

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

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

    $ git sparse-checkout voeg t toe
    ....
    $ git sparse-checkout voeg documentatie toe
    ....
    $ git sparse-afrekenlijst
    Documentatie
    t

  • De prestaties van het “git grep” commando, dat wordt gebruikt om zowel de huidige inhoud van de repository als historische revisies te doorzoeken, zijn aanzienlijk verbeterd. Om het zoeken te versnellen, was het mogelijk om de inhoud van de werkboom te scannen met behulp van meerdere threads (“git grep –threads”), maar het zoeken in historische revisies was met één thread. Deze beperking is nu opgeheven door de mogelijkheid te implementeren om leesbewerkingen vanuit de objectopslag te parallelliseren. Standaard is het aantal threads gelijk ingesteld aan het aantal CPU-kernen, waarvoor in de meeste gevallen nu niet expliciet de optie “-threads” hoeft te worden ingesteld.
  • Ondersteuning toegevoegd voor het automatisch aanvullen van invoer van subopdrachten, paden, links en andere argumenten van het “git worktree” commando, waardoor je met verschillende werkkopieën van de repository kunt werken.
  • Ondersteuning toegevoegd voor heldere kleuren met ANSI-escape-reeksen. In de instellingen voor accentkleuren “git config –color” of “git diff –color-moved” kun je bijvoorbeeld “%C(brightblue)” specificeren via de “--format” optie voor helderblauw.
  • Nieuwe versie van script toegevoegd fsmonitor-wachter, waardoor integratie met het mechanisme wordt geboden Facebook-wachter om het volgen van bestandswijzigingen en het verschijnen van nieuwe bestanden te versnellen. Na het updaten is git vereist заменить haak in de repository.
  • Er zijn optimalisaties toegevoegd om gedeeltelijke klonen te versnellen bij het gebruik van bitmaps
    (bitmapmachines) om te voorkomen dat alle objecten volledig worden doorzocht bij het filteren van de uitvoer. Er wordt nu gecontroleerd op blobs (—filter=blob:none en —filter=blob:limit=n) tijdens gedeeltelijk klonen
    aanzienlijk sneller. GitHub heeft patches aangekondigd met deze optimalisaties en experimentele ondersteuning voor gedeeltelijk klonen.

  • Het "git rebase" commando is verplaatst naar een andere backend, waarbij gebruik wordt gemaakt van het standaard 'merge' mechanisme (voorheen gebruikt voor "rebase -i") in plaats van 'patch+apply'. De backends verschillen op enkele kleine manieren, bijvoorbeeld na het voortzetten van een bewerking na het oplossen van een conflict (git rebase --continu), biedt de nieuwe backend aan om het commit-bericht te bewerken, terwijl de oude eenvoudigweg het oude bericht gebruikte. Om terug te keren naar het oude gedrag, kunt u de optie "--apply" gebruiken of de configuratievariabele 'rebase.backend' instellen op 'apply'.
  • Een voorbeeld van een handler voor authenticatieparameters gespecificeerd via .netrc is teruggebracht tot een vorm die geschikt is voor gebruik out-of-the-box.
  • De instelling gpg.minTrustLevel is toegevoegd om het minimale vertrouwensniveau in te stellen voor verschillende elementen die de verificatie van digitale handtekeningen uitvoeren.
  • "--pathspec-from-file" optie toegevoegd aan "git rm" en "git stash".
  • De verbetering van de testsuites werd voortgezet ter voorbereiding op de overgang naar het SHA-2-hashalgoritme in plaats van SHA-1.

Bron: opennet.ru

Voeg een reactie