Siostam smachd stòr Git 2.41 ri fhaighinn

Às deidh trì mìosan de leasachadh, chaidh an siostam smachd stòr sgaoilte Git 2.41 fhoillseachadh. Is e Git aon de na siostaman smachd dreach as mòr-chòrdte, earbsach agus àrd-choileanadh a bheir seachad innealan leasachaidh sùbailte neo-loidhneach stèidhichte air meuran meurach agus aonachadh. Gus dèanamh cinnteach à ionracas na h-eachdraidh agus an aghaidh atharrachaidhean ath-ghnìomhach, thathas a’ cleachdadh hashing den eachdraidh gu lèir roimhe anns gach gealltanas, tha e comasach cuideachd tagaichean fa leth a dhearbhadh agus geallaidhean le ainmean didseatach bhon luchd-leasachaidh.

An coimeas ris an fhoillseachadh roimhe, chaidh gabhail ri 542 atharrachaidhean san dreach ùr, a chaidh ullachadh le com-pàirt 95 luchd-leasachaidh, agus ghabh 29 dhiubh sin pàirt san leasachadh airson a’ chiad uair. Prìomh innleachdan:

  • Làimhseachadh nas fheàrr air nithean nach gabh ruigsinn air nach eilear a’ toirt iomradh san stòr (chan eilear a’ toirt iomradh air geugan no tagaichean). Bidh an neach-cruinneachaidh sgudail a’ toirt air falbh nithean nach gabh ruighinn, ach fuirichidh iad san stòr airson ùine sònraichte mus tèid an toirt air falbh gus suidheachadh rèis a sheachnadh. Gus sùil a chumail air an ùine de stuthan neo-ruigsinneach, feumar bileagan a cheangal riutha le ùine atharrachaidh nithean coltach ris, nach leig leis an stòradh ann an aon fhaidhle pacaid, anns a bheil ùine atharrachaidh cumanta aig a h-uile nì. Roimhe sin, bha gach nì do-ruigsinneach air a stòradh ann am faidhle air leth, rud a dh’ adhbhraich duilgheadasan nam biodh àireamh mhòr de stuthan ùra do-ruigsinneach nach deach a dhubhadh às fhathast. Anns an fhoillseachadh ùr, gu gnàthach, thathas a’ cleachdadh an uidheamachd “pacaichean cruft” gus stuthan do-ruigsinneach a phacadh, a leigeas le gach nì nach gabh ruighinn a stòradh ann an aon fhaidhle pacaid, agus a’ nochdadh an dàta mu àm atharrachaidh gach nì ann an clàr air leth air a stòradh ann am faidhle pacaidh. faidhle leis an leudachadh “.mtimes” agus ceangailte le bhith a’ cleachdadh faidhle clàr-amais leis an leudachadh “.idx”.
    Siostam smachd stòr Git 2.41 ri fhaighinn
  • Gu gnàthach, tha e comasach clàr-amais cùil (revindex) a chumail air diosc airson faidhlichean pacaid. Nuair a chaidh deuchainn a dhèanamh air na stòran torvalds/linux, le bhith a’ cleachdadh clàr-amais air ais leig leinn gnìomhachd “git push” a bha dian air goireasan a luathachadh 1.49 tursan, agus obrachaidhean sìmplidh, leithid obrachadh a-mach meud aon nì a’ cleachdadh “git cat- file --batch = '%(objectsize:disk)' » 77 tursan. Thèid faidhlichean (.rev") le clàr-amais cùil a stòradh taobh a-staigh an stòr anns an eòlaire “.git/objects/pack”.

    Cuimhnich gu bheil Git a’ stòradh a h-uile dàta ann an cruth nithean, a tha air an cur ann am faidhlichean fa leth. Gus èifeachdas a bhith ag obair leis an ionad-tasgaidh a mheudachadh, tha nithean cuideachd air an cur ann am faidhlichean pacaid, anns a bheil fiosrachadh air a thaisbeanadh ann an cruth sruth de nithean a ’leantainn aon às deidh a chèile (tha cruth coltach ris air a chleachdadh nuair a bhios tu a’ gluasad nithean leis an git fetch agus git òrdughan put). Tha faidhle clàr-amais (.idx) air a chruthachadh airson gach faidhle pacaid, a leigeas leat dearbhadh gu math luath air an chothromachadh ann am faidhle a’ phacaid leis am bi an nì a chaidh a thoirt seachad air a stòradh le aithnichear an nì.

    Tha an clàr-amais cùil a tha air a ghabhail a-steach san fhoillseachadh ùr ag amas air a’ phròiseas gus ID an nì a dhearbhadh a sgioblachadh bho fhiosrachadh mu shuidheachadh an nì anns an fhaidhle pacaid. Roimhe sin, chaidh an leithid de thionndadh a dhèanamh air a ’chuileag nuair a bhathas a’ parsadh am faidhle pacaid agus cha deach a stòradh ach mar chuimhneachan, nach do leig leis na clàran-amais sin ath-chleachdadh agus a thug air an clàr-amais a chruthachadh gach uair. Tha gnìomhachd togail clàr-amais air a lughdachadh gu bhith a’ togail sreath de chàraidean suidheachadh nithean agus ga rèiteachadh a rèir suidheachadh, a bheir ùine mhòr airson faidhlichean pacaid mòra.

    Mar eisimpleir, bha gnìomhachd taisbeanadh susbaint nithean, a bhios a’ cleachdadh clàr-amais dhìreach, 62 uair nas luaithe na an obair a bhith a’ sealltainn meud nithean, airson nach deach dàta dàimh suidheachadh-ri-rud a chlàradh. An dèidh a bhith a 'cleachdadh a' chlàr-cùil, thòisich na h-obraichean sin a 'toirt timcheall air an aon ùine. Leigidh clàran-amais air ais leat cuideachd gnìomhachd cur air falbh stuthan a luathachadh nuair a bhios tu a’ coileanadh òrdughan lorg is put le bhith a’ gluasad dàta deiseil gu dìreach bhon diosc.

    Siostam smachd stòr Git 2.41 ri fhaighinn

  • Taic a bharrachd airson a bhith a’ dol seachad air cinn-cinn WWW-Authenticate eadar an neach-làimhseachaidh teisteanais agus an t-seirbheis dearbhaidh chun phròtacal “neach-cuideachaidh creideas” a thathas a ’cleachdadh gus teisteanasan a thoirt seachad nuair a gheibh thu cothrom air stòran cuibhrichte. Tha taic airson bann-cinn WWW-Authenticate a’ ceadachadh paramadairean raon OAuth a chuir air adhart gu ruigsinneachd luchd-cleachdaidh a tha nas eadar-dhealaichte gu stòran agus a’ cuir crìoch air na raointean a tha rim faighinn airson iarrtasan.
  • Chaidh roghainn fòrmat a chur ris "%(air thoiseach-air cùlaibh: )", a leigeas leat fiosrachadh fhaighinn sa bhad mun àireamh de gheallaidhean a tha an làthair no nach eil ann am meur sònraichte, an coimeas ri meur eile (dè an ìre gu bheil aon mheur air dheireadh no air thoiseach air fear eile aig ìre gealltanas). Roimhe sin, bha feum air dà àithne eadar-dhealaichte gus an fhiosrachadh seo fhaighinn: “git rev-list -count main..my-feature” gus an àireamh de gheallaidhean a tha sònraichte do mheur fhaighinn, agus “git rev-list --count my-feature. main" gus an àireamh de gheallaidhean a tha a dhìth fhaighinn. A-nis faodar àireamhachadh mar seo a lughdachadh gu aon àithne, a bhios a’ sìmpleachadh làimhseachadh sgrìobhaidh agus a ’lughdachadh ùine cur gu bàs. Mar eisimpleir, gus meuran neo-cho-aonaichte a shealltainn agus measadh a bheil iad air cùl no air thoiseach air a' phrìomh mheur aca, faodaidh tu aon-loidhne a chleachdadh: $ git for-each-ref --no-merged=origin/HEAD \ --format=' %(refname:short) %(ahead-behind :origin/HEAD)' \ refs/heads/tb/ | colbh -t tb/cruft-extra-tips 2 96 tb/for-each-ref — na cuir a-mach 16 96 tb/roaring-bitmaps 47 3 an àite an sgriobt a chaidh a chleachdadh roimhe, a tha 17 tursan nas slaodaiche: $ git for-each-ref - format= '%(refname:short)' --no-merged= tùs/HEAD \ refs/cinn/tb | while read ref do ahead="$(git rev-list --count origin/HEAD..$ref)" air a chùlaibh="$(git rev-list --count $ref..origin/HEAD)" printf " %s %d %d\n" "$ref" "$ahead" "$behind" dèanta | colbh -t tb/cruft-extra-tips 2 96 tb/for-each-ref — na cuir a-mach 16 96 tb/ruagadh-bitmaps 47 3
  • Chaidh roghainn "--porcelain" a chur ris an àithne "git fetch", a ghineas toradh san fhòrmat" ”, nach eil cho furasta a leughadh, ach nas freagarraiche airson parsadh ann an sgriobtaichean.
  • Chaidh suidheachadh “fetch.hideRefs” a chuir ris gus gnìomhachd “git fetch” a luathachadh le bhith a’ falach pàirt de na ceanglaichean anns an ionad-tasgaidh ionadail aig ìre dearbhadh an do chuir am frithealaiche an làn sheata de nithean, a shàbhaileas ùine le bhith a’ cuingealachadh an t-seic gu dìreach frithealaichean às an tèid an dàta a tharraing air ais gu dìreach. Mar eisimpleir, nuair a chaidh deuchainn a dhèanamh air siostam le stòran anns a bheil àireamh mhòr de cheanglaichean air an taobh a-muigh, às aonais a h-uile ceangal ach a-mhàin an fheadhainn a chaidh a chuir chun an t-seirbheisiche targaid $ iomallach lughdaich e gnìomhachd “git fetch” bho 20 mionaid gu 30 diog. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remotes/$remote\fetch $remote
  • Tha an àithne “git fsck” a’ cur an gnìomh comas sgrùdadh a dhèanamh airson coirbeachd, maidseadh checksum, agus ceartachd luachan ann am bitmaps ruigsinneachd agus clàran-amais air ais.
  • Tha an àithne “git clone --local” a-nis a’ nochdadh mearachd nuair a thathar a’ feuchainn ri lethbhreac a dhèanamh bho stòr anns a bheil ceanglaichean samhlachail taobh a-staigh $ GIT_DIR.

Source: fosgailtenet.ru

Cuir beachd ann