Vrystelling van die verspreide bronbeheerstelsel Git 2.25

Beskikbaar vrystelling van 'n verspreide bronbeheerstelsel git 2.25.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 583 veranderinge ingesluit, voorberei met die deelname van 84 ontwikkelaars, waarvan 32 vir die eerste keer aan ontwikkeling deelgeneem het. Die belangrikste innovasies:

  • Die moontlikheid van gedeeltelike kloning nader stabilisering en volle gereedheid, wat u toelaat om slegs 'n deel van die data oor te dra en met 'n onvolledige kopie van die bewaarplek te werk. 'n Tipiese kloon kopieer alle data vanaf die bewaarplek, insluitend elke weergawe van elke lêer in die veranderingsgeskiedenis. Vir baie groot bewaarplekke lei die kopiëring van data tot 'n aansienlike toename in verkeer en skyfspasie, selfs al stel die ontwikkelaar net in 'n subset van die lêers belang. Om dit makliker te maak om slegs 'n deel van die werkende bronboom te herwin, stel die nuwe vrystelling 'n eksperimentele "sparse-checkout" opdrag en 'n nuwe "--sparse" opsie vir die "kloon" opdrag bekend.

    Voorheen is die selektiewe kloningsproses deur die taak uitgevoer filters om onnodige inhoud uit te filtreer en die "-geen-betaal" opsie om die invul van ontbrekende lêers te deaktiveer. Daarna, voordat die afrekenbewerking uitgevoer is, was dit nodig om die core.sparseCheckout-instelling te aktiveer en 'n lys van uitgeslote padpatrone in die .git/info/sparse-checkout-lêer te definieer. Byvoorbeeld, om te kloon sonder blobs en te verhoed dat lêers uit subgidse van diepte 2 of meer onttrek word, kan jy hardloop:

    git-kloon --filter=blob:geen --geen-afhandeling /jou/bewaarplek/hier repo
    $cd repo
    $ kat >.git/info/sparse-checkout
    /*
    !/*
    EOF
    $ git config core.sparseCheckout 1
    $ git checkout .

    Die nuwe "git sparse-checkout"-opdrag vereenvoudig die werk aansienlik en verminder die proses om werk met 'n onvolledige bewaarplek te organiseer tot die volgende opdragte:

    git kloon --filter = blob: geen -- yl /jou/bewaarplek/hier repo
    git sparse-checkout stel /path/to/check/out

    Die sparse-checkout-opdrag laat jou toe om 'n lys paaie vir betaal (stel) op te stel sonder om .git/info/sparse-checkout met die hand te konfigureer, asook om die huidige lys paaie (lys) te vertoon en gedeeltelike betaalpunte te aktiveer of te deaktiveer (aktiveer /deaktiveer).

    Om werk met baie groot bewaarplekke en lyste sjablone te optimaliseer, die "git config core.sparseCheckoutCone", wat toegelate patrone beperk (in plaas van arbitrêre .gitignore-patrone, kan jy spesifiseer of alle paaie en alle lêers in 'n gegewe subgids uitgecheck moet word). Byvoorbeeld, as 'n groot bewaarplek 'n gids "A/B/C" het en al die werk is gekonsentreer in die subgids "C", dan, wanneer jy die sparseCheckoutCone-modus aktiveer, die opdrag "git sparse-checkout set A/B/ C sal die hele inhoud van "C" onttrek, maar uit "A" en "B" sal dit slegs die dele onttrek wat nodig is om met "C" te werk.

  • Uit die dokumentasie ("git rebase -h") is alle verwysings na die "--preserve-merges" opsie verwyder, wat afgekeur is en eerder gebruik moet word om 'n stel commits te migreer.git rebase --rebase-merges«.
  • Om die leesbaarheid van boodskappe met kolle wat na poslyste gestuur word te verbeter, is die "git format-patch —cover-from-description subject"-opsie bygevoeg, wanneer gespesifiseer, word die eerste paragraaf van die takbeskrywingsteks gebruik as die onderwerp van die dekbrief vir 'n stel pleisters.
  • Geïmplementeerde ondersteuning vir die gekombineerde gebruik van die “git apply -3way”-opdrag en die “merge.conflictStyle”-instelling (“git apply” neem nou die konflikbeskrywingstyl van merge.conflictStyle in ag wanneer dit nodig is om die konflik op te los nadat jy probeer het om 'n pleisterlêer op die bewaarplek toe te pas).
  • Die funksiedefinisiekode wat gebruik word in bewerkings soos "git diff/grep --show-function/-function-context" is uitgebrei om die definisie van funksiegrense in taalprogramme te ondersteun Elixir.
  • 'n Nuwe opsie is bygevoeg by "git add", "git commit", "git reset" en ander opdragte - "-pathspec-from-file", wat dit moontlik maak om 'n lys paaie vanaf 'n lêer of invoerstroom te laai , in plaas daarvan om hulle op die opdragreël te lys.
  • Die probleem met die opsporing van hernames op die gidsvlak wanneer commits geskryf word, is opgelos. Die definisie het nie gewerk as die inhoud van 'n subgids na die wortel van die bewaarplek geskuif is nie.
  • 'n Aanvanklike implementering van die herontwerpte "git add -i"-opdrag is voorgestel, wat jou toelaat om veranderde inhoud interaktief by te voeg, herskryf van Perl na C. 'n Soortgelyke herbewerking van die "git add -p"-opdrag is aan die gang.
  • Die "git log -graph"-opdrag is herfaktoreer, wat 'n ASCII-beeld van 'n grafiek genereer met die geskiedenis van veranderinge in die bewaarplek. Die herbewerking het dit moontlik gemaak om die uitset aansienlik te verbeter en te vereenvoudig sonder om die struktuur van die storie te verdraai, wat byvoorbeeld die probleem opgelos het met die prentjie wat verby die terminaallynwydte strek.
  • Die opsie "git log --format=.." laat jou toe om die uitvoerformaat te verander,
    uitgebrei met ondersteuning vir die "l/L"-vlae om slegs die deel van die e-posadres te vertoon wat voor die "@"-simbool aangedui word (byvoorbeeld nuttig wanneer alle ontwikkelaars alle e-posse in dieselfde domein het).

  • Het 'n "set-url" subopdrag by die "git submodule" opdrag gevoeg.
  • Toetsstelle is opgedateer ter voorbereiding van die oorgang na
    hashing-algoritme SHA-2 in plaas van SHA-1.

Bron: opennet.ru

Voeg 'n opmerking