Git 2.39 bronbeheervrystelling

Na twee maande se ontwikkeling is die verspreide bronbeheerstelsel Git 2.39 vrygestel. 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 geskiedenis en weerstand teen terugwerkende veranderinge te verseker, word implisiete hashing van die hele vorige geskiedenis in elke commit gebruik, en dit is ook moontlik om individuele etikette en commits te sertifiseer met digitale handtekeninge van ontwikkelaars.

In vergelyking met die vorige weergawe, het die nuwe weergawe 483 veranderinge ingesluit, voorberei met die deelname van 86 ontwikkelaars, waarvan 31 vir die eerste keer aan ontwikkeling deelgeneem het. Belangrikste innovasies:

  • Die "git shortlog"-opdrag, wat ontwerp is om opsommings met statistieke uit die geskiedenis van veranderinge te vertoon, het 'n "-group"-opsie bygevoeg vir arbitrêre groepering van commits volgens velde wat nie beperk is tot outeur of committer nie. Byvoorbeeld, om 'n lys van ontwikkelaars met inligting oor die aantal veranderinge te vertoon, met inagneming van die helpers wat in die "Co-authored-by"-veld genoem word, kan jy die opdrag gebruik: git shortlog -ns --group=author - -group=sleepwa: mede-outeur-deur

    Kortlog-uitset kan saamgevoeg word deur gebruik te maak van formatteringspesifiseerders, en die "--groep" opsie kan die skepping van komplekse verslae aansienlik vereenvoudig en die behoefte aan bykomende sorteeropdragte uitskakel. Byvoorbeeld, om 'n verslag te skep met inligting oor hoeveel commits vir 'n gegewe vrystelling in elke maand aanvaar is, kan jy spesifiseer: git shortlog v2.38.0.. —date='format:%Y-%m' —group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Voorheen, om 'n soortgelyke bewerking uit te voer, sou dit nodig gewees het om die sorteer- en unieke nutsprogramme te gebruik: git log v2.38.0. .. —date='formaat:%Y -%m' —format='%cd' | sorteer | uniek -c

  • Die vermoëns van die "cruft packs"-meganisme, wat ontwerp is vir die verpakking van onbereikbare voorwerpe wat nie in die bewaarplek verwys word nie (wat nie deur takke of etikette verwys word nie), is uitgebrei. Onbereikbare voorwerpe word deur die vullisverwyderaar uitgevee, maar bly vir 'n sekere tyd in die bewaarplek voordat dit uitgevee word om wedrentoestande te vermy. Die "cruft packs"-meganisme laat jou toe om alle onbereikbare voorwerpe in een paklêer te stoor, en data oor die wysigingstyd van elke voorwerp in 'n aparte tabel te vertoon, gestoor in 'n aparte lêer met die ".mtimes"-uitbreiding, sodat hulle dit doen nie oorvleuel met die totale wysigingstyd nie.

    Die tydsduur wat onbereikbare voorwerpe in die bewaarplek bly voordat hulle werklik uitgevee word, word bepaal deur die “—prune=” opsie " Alhoewel uitstel voor uitvee 'n redelik effektiewe en praktiese manier is om bewaarplekkorrupsie as gevolg van rastoestande te voorkom, is dit egter nie 100% betroubaar nie. Om dit makliker te maak om 'n beskadigde bewaarplek te herstel, bied die nuwe weergawe die vermoë om vermiste voorwerpe te stoor deur die opsie "--verval-na" by die "git repack"-opdrag te voeg, wat jou toelaat om 'n lêer te spesifiseer om 'n eksterne kopie van alle verwyderde voorwerpe. Byvoorbeeld, om onbereikbare voorwerpe wat nie in die laaste 5 minute verander het nie in die backup.git-lêer te stoor, kan jy die opdrag gebruik: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Aansienlik verhoog (tot 70%) die spoed van die "git grep -cached" operasie wanneer gesoek word in gebiede wat gedeeltelike kloning gebruik (yl afreken) en waarvoor daar gedeeltelike indekse is (yl indeks). Voorheen, wanneer die opsie "-cached" gespesifiseer is, is die soektog eers in die gewone indeks uitgevoer, en dan in die gedeeltelikes, wat gelei het tot merkbare vertragings tydens soek in groot bewaarplekke.
  • Die bediener se verifikasie van die samehang van nuwe voorwerpe voordat hulle tydens die "git push"-operasie in die bewaarplek geplaas word, is versnel. Deur oor te skakel na verantwoording vir slegs verklaarde skakels tydens nagaan, in 'n toetsbewaarplek met 7 miljoen skakels, waarvan slegs 3% deur die drukoperasie gedek word, het die optimaliserings wat gemaak is, toegelaat om die kontroletyd met 4.5 keer te verminder.
  • Om te beskerm teen potensiële heelgetal-oorloop in die kode, beperk die "git application"-opdrag die maksimum grootte van kolle wat verwerk kan word. As die pleistergrootte 1 GB oorskry, sal 'n fout nou vertoon word.
  • Om teen potensiële kwesbaarhede te beskerm, is veranderinge aangebring om onnodige inligting uit die kopskrifte op te ruim wanneer die h2h3-module met die GIT_TRACE_CURL=1- of GIT_CURL_VERBOSE=1-opsie saam met HTTP/2 gebruik word.
  • Wanneer 'n uitcheck uitgevoer word op 'n tak wat 'n simboliese skakel na 'n ander tak is, vertoon die "git symbolic-ref HEAD" opdrag nou die naam van die teikentak eerder as die naam van die simskakel.
  • Bygevoeg ondersteuning vir die @{-1} argument by die "--edit-description" opsie ("git branch —edit-description @{-1}") vir die wysiging van die beskrywing van 'n vorige tak.
  • Bygevoeg "git merge-tree --stdin" opdrag om 'n lys van parameters deur te gee deur standaard invoer.
  • Op netwerklêerstelsels is die fsmonitor-hanteerder, wat veranderinge in die lêerstelsel monitor, by verstek gedeaktiveer.

Bron: opennet.ru

Voeg 'n opmerking