Git 2.37 bronbeheervrystelling

Die vrystelling van die verspreide bronbeheerstelsel Git 2.37 is aangekondig. 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, is 395 veranderinge in die nuwe weergawe aangeneem, voorberei met die deelname van 75 ontwikkelaars, waarvan 20 vir die eerste keer aan ontwikkeling deelgeneem het. Belangrikste innovasies:

  • Die meganisme van gedeeltelike indekse (yl indeks), wat slegs 'n deel van die bewaarplek dek, is gereed gebring vir wydverspreide gebruik. Gedeeltelike indekse kan werkverrigting verbeter en spasie bespaar in bewaarplekke wat gedeeltelike kloning (spare-checkout) bewerkings uitvoer of met 'n onvolledige kopie van die bewaarplek werk. Die nuwe weergawe voltooi die integrasie van gedeeltelike indekse in die git show, git sparse-checkout en git stash-opdragte. Die mees opvallende prestasievoordeel van die gebruik van gedeeltelike indekse word gesien met die git stash-opdrag, wat 'n 80% toename in uitvoeringspoed in sommige situasies gesien het.
  • 'n Nuwe "cruft packs"-meganisme is geïmplementeer vir die verpakking van onbereikbare voorwerpe wat nie in die bewaarplek verwys word nie (nie deur takke of etikette verwys nie). Onbereikbare voorwerpe word deur die vullisverwyderaar uitgevee, maar bly vir 'n sekere tyd in die bewaarplek voordat dit uitgevee word om wedrentoestande te vermy. Om die tydperk van voorkoms van onbereikbare voorwerpe op te spoor, is dit nodig om etikette aan hulle te heg met die tyd van verandering van soortgelyke voorwerpe, wat dit nie toelaat om dit in een paklêer te stoor waarin alle voorwerpe 'n gemeenskaplike veranderingstyd het nie. Voorheen het die stoor van elke voorwerp in 'n aparte lêer tot probleme gelei toe daar 'n groot aantal vars, onbereikbare voorwerpe was wat nog nie vir uitvee in aanmerking gekom het nie. Die voorgestelde "cruft packs"-meganisme laat jou toe om alle onbereikbare voorwerpe in een paklêer te stoor, en data oor die wysigingstyd van elke voorwerp te reflekteer in 'n aparte tabel wat in 'n lêer met die ".mtimes"-uitbreiding gestoor is.
  • Vir Windows en macOS is daar 'n ingeboude meganisme om veranderinge aan die lêerstelsel op te spoor, wat u toelaat om te verhoed dat dit oor die hele werkgids herhaal word wanneer u operasies soos "git status" uitvoer. Voorheen, om veranderinge op te spoor, kon eksterne nutsprogramme vir die opsporing van veranderinge in die FS, soos Watchman, via hake verbind word, maar dit het die installering van bykomende programme en konfigurasie vereis. Nou is die gespesifiseerde funksionaliteit ingebou en kan dit geaktiveer word met die opdrag "git config core.fsmonitor true".
  • In die "git sparse-checkout"-opdrag is ondersteuning vir 'n alternatief vir die "-cone"-modus, die metode om sjablone vir gedeeltelike kloning te definieer, verouderd verklaar, wat dit moontlik maak wanneer die deel van die bewaarplek bepaal word wat onderhewig is aan die kloningsoperasie, om individuele lêers te lys deur die ".gitignore"-sintaksis te gebruik, wat nie gebruik vir gedeeltelike indekse vir optimalisering toelaat nie.
  • Verhoogde buigsaamheid in die opstel van die fsync()-oproep om veranderinge na skyf te spoel. Ondersteuning vir die "batch"-sinchronisasiestrategie is by die "core.fsyncMethod"-parameter gevoeg, wat dit moontlik maak om werk te bespoedig wanneer 'n groot aantal individuele lêers geskryf word deur veranderinge in die terugskryfkas te versamel, wat deur 'n enkele fsync() teruggestel word. bel. Die toets, wat daartoe gelei het dat 500 lêers bygevoeg is met die “git add”-opdrag, is binne 0.15 sekondes voltooi toe die nuwe modus geaktiveer is, terwyl die oproep van fsync() 1.88 sekondes vir elke lêer geneem het, en sonder om fsync te gebruik - 0.06 sekondes .
  • Vertakkingsopdragte soos "git log" en "git rev-list" het nou 'n opsie "-since-as-filter=X" wat jou toelaat om inligting oor commits wat ouer as "X" is, uit te filter. Anders as die "—sedert" opsie, word die nuwe opdrag geïmplementeer as 'n filter wat nie die soektog stop na die eerste commit ouer as die gespesifiseerde tyd nie.
  • In die "git remote" opdrag, wanneer die "-v" vlag gespesifiseer word, word inligting oor gedeeltelike klone van die bewaarplek vertoon.
  • Bygevoeg "transfer.credentialsInUrl" instelling, wat die waardes "waarsku", "sterf" en "toelaat" kan neem. Indien gespesifiseer in die parameter "remote. .url" plaintext credentials, 'n poging om 'n "haal" of "push" operasie uit te voer, sal misluk met 'n fout as die "transfer.credentialsInUrl" instelling gestel is op "die", of 'n waarskuwing indien gestel op "waarsku".
  • By verstek is die nuwe implementering van die interaktiewe modus van die "git add -i" opdrag, herskryf van Perl na C, geaktiveer.

Bron: opennet.ru

Voeg 'n opmerking