git 2.55

Bekendgestel vrystelling van verspreide bronkodebestuurstelsel git 2.55Onder die belangrikste veranderinge: die aktivering van die standaardbou met Rust, implementering vir Linux fsmonitor-proses, nuwe strategie vir die herverpakking van die inkrementele MIDX-indeks, die git history fixup-opdrag vir die regstel van 'n commit, optimalisering van objekbeskikbaarheidsbitmap-generering, ondersteuning vir parallelle uitvoering van hooks, die git format-rev-opdrag. Git-kode versprei deur gelisensieer onder GPLv2+.

In vergelyking met die vorige vrystelling, bevat die nuwe weergawe 505 veranderinge wat voorberei is met die deelname van 100 ontwikkelaars, waarvan 33 nuut was met Git-ontwikkeling.

Belangrikste innovasies (github.blog, gitlab.com/blog, gitlab.com/git-scm):

  • By verstek ingesluit Ondersteuning vir Rust-komponente. Die rustc-samesteller. bygevoeg in die bou-afhanklikhede. Om sonder Rust te bou, kan jy die NO_RUST=1-vlag gebruik wanneer jy die make-hulpprogram uitvoer, of -Drust=disabled wanneer jy meson configure uitvoer. Die vermoë om bou met Rust te deaktiveer, sal ondersteun word tot Git 3.0, waarin Rust sal wees. ingesluit Onder die vereiste afhanklikhede. Die Rust-taal implementeer 'n laag vir oordraagbaarheid tussen SHA-1 en SHA-256 hash-konfigurasies, sowel as sommige interne funksies, soos die kodering en dekodering van heelgetalle met veranderlike lengte. Meer betekenisvolle interne Git-komponente sal na verwagting in die toekoms in Rust herskryf word.
  • Aan die eksperimentele span "git geskiedenis"Die "git history fixup"-bewerking is bygevoeg tot die commit-geskiedenis herskryfinstrument, wat die vermoë bied om commit-geskiedenis te herskryf. Die fixup-bewerking laat jou toe om veranderinge wat via git add bygevoeg is, na 'n vorige commit te skuif en outomaties alle daaropvolgende commits te herskryf, soortgelyk aan die uitvoering van die git commit --fixup=-opdrag. en git rebase --autosquash laat loop ~.
  • Vir platform Linux agtergrondproses geïmplementeer fsmonitor, wat veranderinge in die lêerstelsel dophou met behulp van 'n meganisme in kennis stel en laat jou toe om te verhoed dat jy die hele werkgids moet deurkruis wanneer jy opdragte soos git status uitvoer. Dit kan geaktiveer word via die "kern.fsmonitor".
  • Die git repack-opdrag het nou 'n nuwe --write-midx=incremental-opsie. Hierdie opsie implementeer 'n nuwe strategie vir die opdatering van metadata in die inkrementele MIDX-indeks (multi-pak-indeks), wat die behoefte om die hele indeks te herpak, uitskakel. Die inkrementele multi-pak-indeks gebruik lae in plaas van 'n enkele groot indeks wat inligting bevat oor die verspreiding van voorwerpe oor paklêers. Elke laag dek 'n spesifieke aantal paklêers en word in 'n aparte bitmap-lêer gestoor. Hierdie struktuur laat toe dat data oor voorwerpe in nuwe paklêers by die indeks gevoeg word deur nuwe lae by die indeks te voeg sonder om bestaande lae te herbou. Die git repack --write-midx=incremental-opdrag voeg 'n nuwe laag by die inkrementele MIDX-indeks, wat onlangs geskepte paklêers dek. Wanneer dit gekombineer word met die --geometric repository-pakmodus, laat die nuwe opdrag jou toe om nuwe voorwerpe van veelvuldige paklêers in 'n enkele groter paklêer te kombineer en, indien nodig, verskeie aangrensende lae van 'n inkrementele MIDX-indeks te pak en saam te voeg. Hierdie strategie laat git repack toe om slegs die boonste lae te herskryf, wat ouer, groter lae ongeskonde laat, en verhoed onbeheerde groei van die laagketting deur die totale aantal lae eweredig aan die logaritme van die totale aantal voorwerpe te handhaaf.
  • Die generering van objekbeskikbaarheidsbitkaarte is aansienlik geoptimaliseer deur 'n nuwe objekboom-deurgangalgoritme wat onnodige rekursie, kasberging van objekposisies, sortering van bitkaarte voordat dit met die XOR-bewerking gekombineer word, en herbewerking van die kode om pseudo-samesmeltingsbitkaarte te skep, uitskakel (pseudo-samesmeltingIn die toetsbewaarplek het optimaliserings die bitmap-genereringstyd van 612 tot 294 sekondes verminder.
  • Die vermoë om onafhanklike take parallel uit te voer, is geïmplementeer hake In konfigurasielêers. Hake wat die gedeelde toestand beïnvloed of in ag neem, soos dié wat commit-notas verander of indekse en die werkboom inspekteer, kan nie parallel loop nie. Hake vir linter-kontrole en eenheidstoetsing kan egter parallel loop. Hake wat parallelle uitvoering toelaat, word gekonfigureer met behulp van die hook.hook_name.parallel = true parameter. Die aantal take wat gelyktydig uitgevoer kan word, word bepaal deur die hook.jobs, hook. .jobs of die -j opdragreël opsie.
  • Die git pack-objects --path-walk opdrag laat jou nou toe om filters soos blob:none, blob:limit= te spesifiseer. , boom:0, voorwerp:tipe= , yl: en kombineer:. In die toets het die weggooi van blobs tydens die uitvoering van --path-walk die grootte van die gegenereerde paklêer met 16% verminder.
  • Die git format-rev-opdrag is bygevoeg vir die formatering van hersienings en objekname wat in commit-lyste genoem word of in arbitrêre teks gevind word (byvoorbeeld, dit kan in hooks gebruik word vir die verwerking van commit-notas).

git laas-gewysig | git formaat-hersien --stdin-modus=teks --formaat=%an

Junio ​​​​C Hamano ingebou/commit.c

  • Ontsnapping van die meeste terminaalbeheerreekse in inligtingsboodskappe en foutteks wat deur die bediener gestuur word, is standaard geaktiveer. Wanneer toegang tot 'n kwaadwillige bediener verkry word, kan sulke ontsnappingsreekse gebruik word om uitvoer te versteek of te wysig, byvoorbeeld deur ontsnappingsreekse vir wyserbeweging en teksverwydering. Ondersteuning vir ontsnappingsreekse vir die uitlig van elemente is behou.
  • Die git checkout -m-opdrag stoor nou outomaties teenstrydige plaaslike veranderinge na die voorraadarea sonder dat jy die konflik onmiddellik hoef op te los.
  • Die git push-opdrag ondersteun nou die stoot van 'n tak na verskeie eksterne Git-bedieners met 'n enkele opdrag. Byvoorbeeld, om die hooftak nie net na die primêre bediener te stoot nie, maar ook na spieëls, kan jy 'n publiseergroep skep wat bestaan ​​uit die github-, gitlab- en spieëlbedieners:

git config remotes.publish "github gitlab spieël"
git push publiseer hoof

  • Die --graph-lane-limit= opsie is by die git log --graph opdrag gevoeg. om die aantal vertikale balkies te beperk wanneer takke gevisualiseer word, wat jou toelaat om spasie op die skerm te laat vir commit-data in bewaarplekke met 'n groot aantal takke.

...
* | | | | 619931f561 Voeg tak 'dl/posix-unused-warning-clang' saam
|\ \ \ \ \
| * | | | ~ cf48887610 compat/posix.h: vereenvoudig GIT_GNUC_PREREQ() vergelyking
| * | | | ~ ffd45926dc compat/posix.h: maak GIT_GNUC_PREREQ() en UNUSED skoon
|\ \ \ \ \~
| * | | | ~3f5203eeb4 ls-lêers: filter padspesifikasie voor lstat

  • Die --max-count-oldest= opsie is by die git log en git rev-list opdragte gevoeg. , wat jou toelaat om die N oudste commits in 'n reeks te kies.

Bron: linux.org.ru

Koop betroubare hosting vir werwe met DDoS-beskerming, VPS VDS-bedieners 🔥 Koop betroubare webwerfhosting met DDoS-beskerming, VPS VDS-bedieners | ProHoster