Vrystelling van die verspreide bronbeheerstelsel Git 2.26

Beskikbaar vrystelling van 'n verspreide bronbeheerstelsel git 2.26.0. Git is een van die gewildste, betroubare en hoëprestasie-weergawebeheerstelsels, wat buigsame nie-lineêre ontwikkelingsinstrumente bied wat gebaseer is op vertakking en samesmelting. Om die integriteit van die geskiedenis en weerstand teen terugwerkende veranderinge te verseker, word implisiete hashing van die hele vorige geskiedenis in elke commit gebruik; dit is ook moontlik om individuele etikette en commits te sertifiseer met digitale handtekeninge van die ontwikkelaars.

In vergelyking met die vorige weergawe, het die nuwe weergawe 504 veranderinge ingesluit, voorberei met die deelname van 64 ontwikkelaars, waarvan 12 vir die eerste keer aan ontwikkeling deelgeneem het. Die belangrikste innovasies:

  • Die verstek is oorgeskakel na tweede weergawe Git-kommunikasieprotokol, wat gebruik word wanneer 'n kliënt op afstand aan 'n Git-bediener koppel. Die tweede weergawe van die protokol is opvallend vir die verskaffing van die vermoë om takke en etikette aan die bedienerkant te filter, wat 'n verkorte lys skakels na die kliënt terugstuur. Voorheen sou enige trek-opdrag altyd aan die kliënt die volledige lys verwysings in die hele bewaarplek stuur, selfs wanneer die kliënt net een tak opdateer of seker maak dat hul kopie van die bewaarplek op datum is. Nog 'n noemenswaardige innovasie is die vermoë om nuwe vermoëns by die protokol te voeg namate nuwe funksionaliteit in die gereedskapstel beskikbaar word. Die kliëntkode bly versoenbaar met die ou protokol en kan aanhou werk met beide nuwe en ou bedieners, en val outomaties terug na die eerste weergawe as die bediener nie die tweede ondersteun nie.
  • Die opsie "-show-scope" is by die "git config"-opdrag gevoeg, wat dit makliker maak om die plek te identifiseer waar sekere instellings gedefinieer is. Git laat jou toe om instellings op verskillende plekke te definieer: in die bewaarplek (.git/info/config), in die gebruikersgids (~/.gitconfig), in die stelselwye konfigurasielêer (/etc/gitconfig), en deur opdrag lynopsies en omgewingsveranderlikes. Wanneer u "git config" uitvoer, is dit nogal moeilik om te verstaan ​​waar presies die gewenste instelling gedefinieer is. Om hierdie probleem op te los, was die “--wys-oorsprong” opsie beskikbaar, maar dit wys net die pad na die lêer waarin die instelling gedefinieer is, wat nuttig is as jy van plan is om die lêer te redigeer, maar dit help nie as jy moet die waarde verander deur "git config" deur die opsies "--system", "--global" of "-local" te gebruik. Die nuwe opsie "--show-scope" vertoon die veranderlike definisie konteks en kan gebruik word in samewerking met -show-origin:

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

    $ git config --show-scope --get-regexp 'diff.*'
    globale diff.statgraphwidth 35
    local diff.colormoved plain

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

  • In die bindinstellings geloofsbriewe Die gebruik van maskers in URL's word toegelaat. Enige HTTP-instellings en geloofsbriewe in Git kan gestel word vir beide alle verbindings (http.extraHeader, credential.helper) en vir URL-gebaseerde verbindings (credential.https://example.com.helper, credential.https: //example. com.helper). Tot nou toe was wildcards soos *.example.com slegs toegelaat vir HTTP-instellings, maar is nie vir geloofsbriewe gesteun nie. In Git 2.26 word hierdie verskille uitgeskakel en, byvoorbeeld, om 'n gebruikersnaam aan alle subdomeine te bind, kan jy nou spesifiseer:

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

    gebruikersnaam = ttaylorr

  • Die uitbreiding van eksperimentele ondersteuning vir gedeeltelike kloning (gedeeltelike klone) gaan voort, sodat jy slegs 'n deel van die data kan oordra en met 'n onvolledige kopie van die bewaarplek kan werk. Die nuwe weergawe voeg 'n nuwe opdrag "git sparse-checkout add" by, wat jou toelaat om individuele gidse by te voeg om die "checkout"-operasie op slegs 'n deel van die werkboom toe te pas, in plaas daarvan om al sulke dopgehou op een slag te lys deur die opdrag "git sparse-checkout set" (jy kan een vir een een gids byvoeg, sonder om die hele lys elke keer weer te spesifiseer).
    Byvoorbeeld, om 'n git/git-bewaarplek te kloneer sonder om blobs te pleeg, die afhandeling tot slegs die wortelgids van die werkkopie te beperk, en die afhandeling apart vir die "t" en "Documentation"-gidse te merk, kan jy spesifiseer:

    $ git kloon --filter=blob:geen --spar [e-pos beskerm]:git/git.git

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

    $ git sparse-checkout voeg t
    ....
    $ git sparse-checkout voeg Dokumentasie by
    ....
    $ git yl afrekenlys
    dokumentasie
    t

  • Die werkverrigting van die “git grep”-opdrag, wat gebruik word om beide die huidige inhoud van die bewaarplek en historiese hersienings te soek, is aansienlik verbeter. Om die soektog te bespoedig, was dit moontlik om die inhoud van die werkende boom te skandeer met behulp van veelvuldige drade ("git grep -threads"), maar die soektog in historiese hersienings was enkeldraad. Nou is hierdie beperking verwyder deur die vermoë te implementeer om leesbewerkings vanaf die objekberging te paralleliseer. By verstek word die aantal drade gelyk gestel aan die aantal SVE-kerne, wat in die meeste gevalle nou nie eksplisiet vereis dat die "-threads"-opsie ingestel word nie.
  • Bygevoeg ondersteuning vir outovoltooiing van invoer van subopdragte, paaie, skakels en ander argumente van die "git worktree" opdrag, wat jou toelaat om met verskeie werkskopieë van die bewaarplek te werk.
  • Bygevoeg ondersteuning vir helder kleure wat ANSI-ontsnappingsreekse het. Byvoorbeeld, in die instellings vir hoogtepuntkleure “git config –color” of “git diff –color-moved” kan jy “%C(brightblue)” spesifiseer via die “--format” opsie vir helderblou.
  • Bygevoeg nuwe weergawe van script fsmonitor-wagter, wat integrasie met die meganisme verskaf Facebook Watchman om die dop van lêerveranderinge en die voorkoms van nuwe lêers te bespoedig. Na die opdatering word git vereis te vervang haak in die bewaarplek.
  • Optimalisasies bygevoeg om gedeeltelike klone te bespoedig wanneer bitmaps gebruik word
    (bitmap-masjinerie) om 'n volledige soektog van alle voorwerpe te vermy wanneer die uitset gefiltreer word. Daar word nou gekyk vir blobs (—filter=blob:none en —filter=blob:limit=n) tydens gedeeltelike kloning
    aansienlik vinniger. GitHub het pleisters aangekondig met hierdie optimalisering en eksperimentele ondersteuning vir gedeeltelike kloning.

  • Die "git rebase"-opdrag is na 'n ander agterkant geskuif, met behulp van die verstek 'merge'-meganisme (voorheen gebruik vir "rebase -i") in plaas van 'patch+apply'. Die backends verskil in 'n paar klein maniere, byvoorbeeld, na die voortsetting van 'n operasie nadat 'n konflik opgelos is (git rebase --continue), bied die nuwe backend aan om die commit-boodskap te wysig, terwyl die ou een bloot die ou boodskap gebruik het. Om terug te keer na die ou gedrag, kan jy die "--toepassing" opsie gebruik of die 'rebase.backend' konfigurasie veranderlike op 'toepassing' stel.
  • 'n Voorbeeld van 'n hanteerder vir verifikasieparameters wat via .netrc gespesifiseer is, is gereduseer tot 'n vorm wat geskik is vir gebruik buite die boks.
  • Het die gpg.minTrustLevel-instelling bygevoeg om die minimum vertrouensvlak te stel vir verskeie elemente wat digitale handtekeningverifikasie uitvoer.
  • Bygevoeg "--pathspec-from-file" opsie by "git rm" en "git stash".
  • Verbetering van toetssuites het voortgegaan ter voorbereiding van die oorgang na die SHA-2-hash-algoritme in plaas van SHA-1.

Bron: opennet.ru

Voeg 'n opmerking