System rheoli ffynhonnell Git 2.41 ar gael

Ar ôl tri mis o ddatblygiad, mae rhyddhau'r system rheoli ffynhonnell ddosbarthedig Git 2.41 wedi'i gyhoeddi. Git yw un o'r systemau rheoli fersiynau mwyaf poblogaidd, dibynadwy a pherfformiad uchel sy'n darparu offer datblygu aflinol hyblyg yn seiliedig ar ganghennau ac uno canghennau. Er mwyn sicrhau cywirdeb yr hanes a gwrthwynebiad i newidiadau ôl-weithredol, defnyddir stwnsh ymhlyg o'r holl hanes blaenorol ym mhob ymrwymiad, mae hefyd yn bosibl gwirio tagiau unigol ac ymrwymo gyda llofnodion digidol gan y datblygwyr.

O'i gymharu â'r datganiad blaenorol, derbyniwyd 542 o newidiadau i'r fersiwn newydd, a baratowyd gyda chyfranogiad 95 o ddatblygwyr, a chymerodd 29 ran yn y datblygiad am y tro cyntaf. Prif arloesiadau:

  • Trin yn well gwrthrychau na ellir eu cyrraedd na chyfeirir atynt yn y gadwrfa (na chyfeirir atynt gan ganghennau neu dagiau). Mae gwrthrychau na ellir eu cyrraedd yn cael eu dileu gan y casglwr sbwriel, ond maent yn aros yn y storfa am amser penodol cyn eu dileu er mwyn osgoi amodau hil. Er mwyn olrhain cyfnod y gwrthrychau na ellir eu cyrraedd, mae angen atodi tagiau iddynt gydag amser newid gwrthrychau tebyg, nad yw'n caniatáu eu storio mewn un ffeil pecyn lle mae gan bob gwrthrych amser newid cyffredin. Yn flaenorol, roedd pob gwrthrych anghyraeddadwy yn cael ei storio mewn ffeil ar wahân, a arweiniodd at broblemau pan oedd nifer fawr o wrthrychau anghyraeddadwy ffres nad oeddent eto'n gymwys i'w dileu. Yn y datganiad newydd, defnyddir y mecanwaith “pecynnau cruft” yn ddiofyn ar gyfer pacio gwrthrychau na ellir eu cyrraedd, sy'n eich galluogi i storio'r holl wrthrychau na ellir eu cyrraedd mewn un ffeil pecyn, ac adlewyrchir data ar amser addasu pob gwrthrych mewn tabl ar wahân, wedi'i storio mewn ffeil gyda'r estyniad “.mtimes” ac wedi'i gysylltu gan ddefnyddio ffeil mynegai gyda'r estyniad “.idx”.
    System rheoli ffynhonnell Git 2.41 ar gael
  • Mae cynnal mynegai gwrthdro ar ddisg ar gyfer ffeiliau pecyn wedi'i alluogi yn ddiofyn. Wrth gynnal profion ar ystorfa torvalds/linux, roedd defnyddio mynegai gwrthdro yn ei gwneud hi’n bosibl cyflymu gweithrediadau “gwthio git” adnoddau-ddwys 1.49 o weithiau, a gweithrediadau syml fel cyfrifo maint gwrthrych unigol gan ddefnyddio “git cat- file —batch='%(objectsize:disk)' "77 o weithiau. Bydd ffeiliau (“.rev”) gyda mynegai gwrthdro yn cael eu storio y tu mewn i’r gadwrfa yn y cyfeiriadur “.git/objects/pack”.

    Dwyn i gof bod Git yn storio'r holl ddata ar ffurf gwrthrychau, sydd wedi'u lleoli mewn ffeiliau ar wahân. Er mwyn cynyddu effeithlonrwydd gweithio gyda'r ystorfa, gosodir gwrthrychau hefyd mewn ffeiliau pecyn, lle cyflwynir gwybodaeth ar ffurf llif o wrthrychau yn dilyn ei gilydd (defnyddir fformat tebyg wrth drosglwyddo gwrthrychau gyda'r git fetch a git push gorchmynion). Ar gyfer pob ffeil pecyn, crëir ffeil mynegai (.idx), sy'n eich galluogi i bennu'r gwrthbwyso yn gyflym iawn yn y ffeil pecyn lle mae'r gwrthrych a roddir yn cael ei storio gan ddefnyddio'r dynodwr gwrthrych.

    Mae'r mynegai gwrthdro sydd wedi'i gynnwys yn y datganiad newydd wedi'i anelu at optimeiddio'r broses o bennu'r dynodwr gwrthrych o wybodaeth am leoliad y gwrthrych yn y ffeil pecyn. Yn flaenorol, cyflawnwyd trosiad o'r fath ar y hedfan wrth ddosrannu'r ffeil pecyn ac fe'i storiwyd yn y cof yn unig, nad oedd yn caniatáu ailddefnyddio mynegeion tebyg a gorfodi'r mynegai i gael ei gynhyrchu bob tro. Mae gweithrediad adeiladu mynegai yn dibynnu ar adeiladu amrywiaeth o barau safle gwrthrych a'i ddidoli yn ôl safle, a all gymryd amser hir ar gyfer ffeiliau pecyn mawr.

    Er enghraifft, roedd gweithrediad i arddangos cynnwys gwrthrychau, sy'n defnyddio mynegai uniongyrchol, 62 gwaith yn gyflymach na gweithrediad i arddangos maint gwrthrychau, nad oedd y data safle-i-wrthrych wedi'i fynegeio ar ei gyfer. Ar ôl defnyddio'r mynegai gwrthdro, dechreuodd y gweithrediadau hyn gymryd tua'r un amser. Mae mynegeion gwrthdro hefyd yn caniatáu ichi gyflymu gweithrediadau anfon gwrthrychau wrth weithredu gorchmynion nôl a gwthio trwy drosglwyddo data parod yn uniongyrchol o ddisg.

    System rheoli ffynhonnell Git 2.41 ar gael

  • Mae'r protocol “cynorthwyydd cymwysedig”, a ddefnyddir i drosglwyddo tystlythyrau wrth gyrchu ystorfeydd â mynediad cyfyngedig, wedi ychwanegu cefnogaeth ar gyfer pasio penawdau WWW-Authenticate rhwng y sawl sy'n trin y tystlythyr a'r gwasanaeth y cyflawnir dilysu ynddo. Mae cefnogaeth i bennawd WWW-Authenticate yn caniatáu ichi basio paramedrau cwmpas OAuth ar gyfer gwahaniad mwy gronynnog o fynediad defnyddwyr i ystorfeydd a chyfyngu ar y cwmpasau sydd ar gael ar gyfer ceisiadau.
  • Mae opsiwn fformatio "%(ar y blaen-tu ôl: )" wedi'i ychwanegu at y gorchymyn for-each-ref, sy'n eich galluogi i gael gwybodaeth ar unwaith am nifer yr ymrwymiadau sy'n bresennol neu'n absennol mewn cangen benodol, o'i gymharu ag un arall cangen (faint sydd ar ei hôl hi neu ar y blaen i gangen arall ar y lefel ymrwymo). Yn flaenorol, i gael gwybodaeth o'r fath, roedd angen i chi redeg dau orchymyn ar wahân: “git rev-list —count main..my-feature” i gael nifer yr ymrwymiadau sy'n unigryw i'r gangen a “git rev-list —count my-feature ..main” i gael y nifer sydd ar goll yn ymrwymo. Nawr gellir lleihau cyfrifiadau o'r fath i un gorchymyn, sy'n symleiddio ysgrifennu trinwyr ac yn lleihau amser gweithredu. Er enghraifft, i ddangos canghennau nad ydynt wedi'u huno a gwerthuso a ydynt ar ei hôl hi neu ar y blaen i'w prif gangen, gallwch ddefnyddio un-leinin: $ git for-each-ref —no-merged=origin/HEAD \ —format =' %(refname:short) %(ar y blaen-tu ôl :origin/HEAD)' \refs/heads/tb/ | colofn -t tb/cruft-extra-tips 2 96 tb/for-each-ref — eithrio 16 96 tb/rhuo-didfaps 47 3 yn lle'r sgript a ddefnyddiwyd yn flaenorol, sy'n rhedeg 17 gwaith yn arafach: $ git am-bob-cyf — format='%(refname:short)' -no-merged=tarddiad/HEAD \ refs/heads/tb | while read ref do ahead = "$(git rev-list -count origin/HEAD..$ref)" tu ôl = "$(git rev-list -count $ref..origin/HEAD)" printf " %s %d %d\n" "$ref" "$ahead" "$behind" wedi'i wneud | colofn -t tb/cruft-awgrymiadau ychwanegol 2 96 tb/am-bob-cyf — eithrio 16 96 tb/rhuad-fapiau didau 47 3
  • Mae’r opsiwn “—porcelain” wedi’i ychwanegu at y gorchymyn “git fetch”, pan nodir hynny, cynhyrchir allbwn yn y fformat “ ” , yn llai darllenadwy, ond yn fwy cyfleus ar gyfer dosrannu mewn sgriptiau.
  • Ychwanegwyd y gosodiad “fetch.hideRefs”, sy'n eich galluogi i gyflymu gweithrediadau “git fetch” trwy guddio rhai o'r cyfeiriadau yn y gadwrfa leol ar y cam o wirio bod y gweinydd wedi anfon set lawn o wrthrychau, sy'n arbed amser erbyn cyfyngu'r siec yn unig i weinyddion y mae data'n cael ei adfer yn uniongyrchol ohonynt. Er enghraifft, wrth redeg prawf ar system gyda storfeydd sy'n cynnwys nifer fawr o ddolenni allanol wedi'u tracio, roedd eithrio'r holl ddolenni ac eithrio'r rhai a gyfeiriwyd at y gweinydd targed $remote wedi lleihau gweithrediad y gweithrediad git fetch o 20 munud i 30 eiliad. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remote/$remote \ nôl $remote
  • Mae'r gorchymyn "git fsck" yn darparu'r gallu i wirio am lygredd, cydymffurfiaeth checksum, a chywirdeb gwerthoedd mewn mapiau didau hygyrchedd a mynegeion gwrthdro.
  • Mae'r gorchymyn "git clone --local" bellach yn dangos gwall wrth geisio copïo o ystorfa sy'n cynnwys dolenni syml y tu mewn i $GIT_DIR.

Ffynhonnell: opennet.ru

Ychwanegu sylw