Vrystelling van die verspreide bronbeheerstelsel Git 2.31

Die verspreide bronbeheerstelsel Git 2.31 is nou beskikbaar. 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 679 veranderinge ingesluit, voorberei met die deelname van 85 ontwikkelaars, waarvan 23 vir die eerste keer aan ontwikkeling deelgeneem het. Belangrikste innovasies:

  • Het die "git maintenance"-opdrag bygevoeg, wat jou toelaat om periodieke werk uit te voer op stelsels wat nie cron ondersteun nie. Byvoorbeeld, deur 'n nuwe opdrag te gebruik, kan jy reël dat die bewaarplekverpakkingsproses periodiek loop, sodat jy nie hoef te wag totdat die bewaarplek gesluit is wanneer verpakking outomaties uitgevoer word terwyl verskeie opdragte uitgevoer word nie. Die "git maintenance"-opdrag laat jou toe om optimalisering en bewerkings uit te voer om die optimale struktuur van die bewaarplek op die agtergrond te handhaaf, sonder om die interaktiewe sessie te blokkeer - een keer per uur word daar gewerk om proaktief vars voorwerpe van die afgeleë bewaarplek af te laai en die lêer met die commit-grafiek, en die proses om die bewaarplek te pak begin elke aand.
  • Bygevoeg ondersteuning vir die handhawing van 'n omgekeerde indeks (revindex) op skyf vir paklêers. Onthou dat Git alle data in die vorm van voorwerpe stoor, wat in aparte lêers geleë is. Om die doeltreffendheid van die werk met die bewaarplek te verhoog, word voorwerpe addisioneel in paklêers geplaas, waarin inligting aangebied word in die vorm van 'n stroom voorwerpe wat op mekaar volg ('n soortgelyke formaat word gebruik wanneer voorwerpe oorgedra word met die git fetch en git push opdragte). Vir elke paklêer word 'n indekslêer (.idx) geskep, wat jou in staat stel om baie vinnig die offset in die paklêer te bepaal waarteen die gegewe objek gestoor word deur die objekidentifiseerder te gebruik. In Git 2.31 bekendgestel, is die omgekeerde indeks (.rev) daarop gemik om die proses van die bepaling van 'n objekidentifiseerder te optimaliseer uit inligting oor die plasing van 'n voorwerp in 'n paklêer.

    Voorheen is sulke omskakeling onmiddellik uitgevoer terwyl die paklêer ontleed is en is slegs in die geheue gestoor, wat nie toegelaat het dat soortgelyke indekse hergebruik word nie en gedwing het om die indeks elke keer te genereer. Die operasie van die bou van 'n indeks kom daarop neer om 'n verskeidenheid voorwerp-posisie-pare te konstrueer en dit volgens posisie te sorteer, wat 'n lang tyd kan neem vir groot paklêers.

    Byvoorbeeld, 'n bewerking om die inhoud van voorwerpe te vertoon, wat 'n direkte indeks gebruik, was 62 keer vinniger as 'n bewerking om die grootte van voorwerpe te vertoon, waarvoor die posisie-tot-objek-data nie geïndekseer is nie. Nadat die omgekeerde indeks gebruik is, het hierdie bewerkings ongeveer dieselfde tyd begin neem. Omgekeerde indekse laat jou ook toe om objekversending bedrywighede te versnel wanneer haal- en drukopdragte uitgevoer word deur klaargemaakte data direk vanaf skyf oor te dra. By verstek word omgekeerde indekse nie geskep nie; om dit te genereer, moet jy die “git config pack.writeReverseIndex true”-instelling aktiveer en dan die repository met die “git repack -Ad”-opdrag verpak.

  • Bygevoeg prestasie-optimalisasies gebaseer op die voorkoms in die commit-grafiek-lêerformaat, wat gebruik word om toegang tot inligting oor commits te optimaliseer, nuwe data oor die commit-generasienommer, wat gebruik kan word om bykomende bewerkings met commits te bespoedig.
  • Bygevoeg opsies vir die herdefiniëring van die naam van die hooftak wat by verstek in nuwe bewaarplekke gebruik word (init.defaultBranch-instelling). Wanneer u toegang tot eksterne bewaarplekke kry, probeer git om die tak na te gaan waarna HEAD verwys, d.w.s. as die eksterne bediener die "hoof" tak by verstek gebruik, dan sal die "git clone" operasie probeer om "main" plaaslik uit te check. Git 2.31 ondersteun nou hierdie tipe afhandeling vir leë bewaarplekke. Byvoorbeeld, wanneer 'n nuwe bewaarplek plaaslik gekloon word voordat die eerste pleisters daarby gevoeg word, sal die plaaslike kopie nou die verstek stroomopnaam bevat wat op die eksterne bediener gestel is.
  • Het 'n --disk-gebruik opsie by die "git rev-list" opdrag gevoeg om 'n opsomming van die grootte van voorwerpe te verskaf.
  • In afwagting van die komende verandering aan die samesmelting-backend, is hernoemopsporing aansienlik geoptimaliseer.
  • Ondersteuning vir die erfenis PCRE1 gereelde uitdrukking biblioteek is gestaak.
  • Dit is moontlik om die gebruik van verkorte skakels met geweld te verbied, ongeag die hashing-algoritme. Die verbod word geaktiveer deur die waarde "nee" aan die core.abbrev parameter toe te ken.
  • Bygevoeg "--path-format=(absolute|relatief)" opsie by die "git rev-parse" opdrag om eksplisiet te spesifiseer of relatiewe of absolute paaie uitgevoer moet word.
  • Bash-voltooiingsskrifte maak dit maklik om voltooiingsreëls vir jou eie "git" subopdragte by te voeg.
  • Het 'n --stdin-opsie by die "git bundle"-opdrag gevoeg om verwysings vanaf die standaard-invoerstroom te lees.
  • 'n Nuwe opsie is by die "git log"-opdrag gevoeg: "--diff-merges=" "
  • Bygevoeg "--deduplicatecan" opsie by "git ls-files" opdrag om duplikaat uitvoer uit te skakel.
  • Nuwe maskers bygevoeg om 'n reeks commits uit te sluit - " ^!” en " ^- "
  • Bygevoeg "--left-only" en "--right-only" opsies by die "git range-diff" opdrag om slegs een kant van die reeks wat vergelyk word, te wys.
  • Bygevoeg --skip-to= opsies by die "git diff" en "git log" opdragte " en "-rotate-to= » om oor te slaan of na die einde van die beginpaadjies te beweeg.
  • Bygevoeg "--skip-to=" opsie by "git difftool" opdrag » om 'n onderbroke sessie vanaf 'n ewekansige pad te hervat.
  • Die gedragskode, wat die basiese beginsels vir die oplossing van konfliksituasies tussen ontwikkelaars definieer, is opgedateer na weergawe 2.0 (voorheen is weergawe 1.4 gebruik).

    Bron: opennet.ru

Voeg 'n opmerking