Pergala kontrola çavkaniya Git 2.41 heye

Piştî sê mehên pêşveçûnê, serbestberdana pergala kontrola çavkaniya belavkirî Git 2.41 hate weşandin. Git yek ji wan pergalên kontrolkirina guhertoya herî populer, pêbawer û bi performansa bilind e ku amûrên pêşkeftina ne-xetî yên maqûl li ser bingeha şaxkirin û hevgirtina şaxan peyda dike. Ji bo misogerkirina yekrêziya dîrokê û berxwedana li hember guhertinên paşverû, di her komîtekê de hejandina nepenî ya tevahiya dîroka berê tê bikar anîn, di heman demê de gengaz e ku meriv tag û peymanên kesane bi îmzeyên dîjîtal ji pêşdebiran verast bike.

Li gorî serbestberdana berê, 542 guhertin di guhertoya nû de, ku bi beşdariya 95 pêşdebiran hatî amadekirin, hatin pejirandin, ji wan 29 ji bo yekem car beşdarî pêşkeftinê bûn. Nûvekirinên sereke:

  • Desthilatdariya çêtir a tiştên negihîştî yên ku di depoyê de nayên referans kirin (şax an etîket nayên referans kirin). Tiştên negihîştî ji hêla berhevkarê çopê ve têne rakirin, lê berî rakirinê demek diyar di depoyê de dimînin da ku ji şert û mercên nijadê dûr bikevin. Ji bo şopandina heyama tiştên negihîştî, pêdivî ye ku etîketan bi dema guheztina tiştên mîna hev re bi wan ve girêdin, ku rê nade wan di yek pakêt-pelê de were hilanîn, ku tê de hemî tişt xwedan demek guhartina hevpar in. Berê, her tişta negihîştî di pelek cihê de dihat hilanîn, ku ev yek dibû sedema pirsgirêkan heke hejmareke mezin ji tiştên nû yên negihîştî hebin ku hîna jêbirinê nebûya. Di weşana nû de, ji hêla xwerû de, mekanîzmaya "pakêtên cruft" tê bikar anîn da ku tiştên ku negihêjin pakkirinê, ku dihêle hemî tiştên negihîştî di pelek pakêtek de werin hilanîn, û daneyên li ser dema guheztinê ya her tiştê di tabloyek cihêreng de ku di nav pelek de hatî hilanîn de nîşan bide. pelê bi dirêjkirina ".mtimes" û bi pelê pêveka bi dirêjkirina ".idx" ve girêdayî ye.
    Pergala kontrola çavkaniya Git 2.41 heye
  • Ji hêla xwerû ve, ji bo pelên pakêtê li ser dîskê pêşekek berevajî (revindex) çalak e. Dema ku li ser depoyên torvalds/linux hat ceribandin, karanîna nîşanek berevajî rê da me ku em operasyonên "git push" yên çavkaniyê 1.49 carî bilez bikin, û operasyonên hêsan, wek mînak hesabkirina mezinahiya yek tişt bi karanîna "git cat-". file --batch='%(objectsize:disk)' » 77 car. Pelên (.rev") yên bi nîşanek berevajî wê di hundurê depoyê de di pelrêça ".git/objects/pack" de werin hilanîn.

    Bînin bîra xwe ku Git hemî daneyan di forma tiştan de, ku di pelên cûda de têne danîn, hilîne. Ji bo zêdekirina karbidestiya xebata bi depoyê re, tiştên din jî di pelên pakêtê de têne bicîh kirin, ku tê de agahdarî di forma çemek tiştan de li pey hev têne pêşkêş kirin (formatek wusa tête bikar anîn dema ku tiştan bi git fetch û git veguhezînin. fermanên push). Ji bo her pelê paketê pelek index (.idx) tê afirandin, ku destûrê dide te ku hûn pir zû di dosyaya pakêtê de guheztina ku tiştê hatî dayîn ji hêla nasnavê objektê ve tê hilanîn destnîşan bikin.

    Indeksa berevajî ya ku di serbestberdana nû de tê de tête armanc kirin ku pêvajoya destnîşankirina nasnameya objektê ji agahdariya li ser cîhê tiştê di pelê pakêtê de hêsan bike. Berê, veguheztina wusa di dema parskirina pelê pakê de bi lez dihate kirin û tenê di bîranînê de dihat hilanîn, ku rê neda ji nû ve bikar anîna van nîşanan û neçar dikir ku her carê pêvek were çêkirin. Operasyona avakirina îndeksekê ji bo avakirina komek cotên obje-pozîsyonê û rêzkirina wê li gorî pozîsyonê kêm dibe, ku dikare ji bo pelên pakê yên mezin demek dirêj bigire.

    Mînakî, operasyona nîşankirina naveroka tiştan, ku nîşanek rasterast bikar tîne, 62 qat zûtir bû ji operasyona nîşankirina mezinahiya tiştan, ku ji bo wan daneyên pêwendiya pozîsyon-objekt nehatin nîşankirin. Piştî karanîna nîşana berevajî, van operasyonan bi qasî heman demê dest pê kir. Indeksên berevajî di heman demê de dihêle hûn gava ku emrên hilanîn û pêlê bi cih tînin bi veguheztina rasterast daneyên amade ji dîskê ve operasyona şandina tiştan bilezînin.

    Pergala kontrola çavkaniya Git 2.41 heye

  • Piştgiriyek ji bo derbaskirina sernavên WWW-Authenticate di navbera kargêrê pêbaweriyê û karûbarê verastkirinê de ji protokola "Alîkarê pêbaweriyê" re ku dema gihîştina depoyên qedexekirî ji bo derbaskirina pêbaweriyan tê bikar anîn zêde kir. Piştgiriya ji bo sernavê WWW-Authenticate dihêle ku parametreyên qada OAuth ji gihandina bikarhêneran a bi hûrgulî veqetandî ji depoyan re were derbas kirin û çarçoveyên ku ji bo daxwazan peyda dibin veqetînin.
  • Vebijarka formatê "%(pêş-paş: )", ku dihêle hûn tavilê agahdarî li ser hejmara betlaneyên ku di şaxek diyarkirî de hene an tune ne, li gorî şaxek din (çiqas şaxek di asta peywiran de li paş an li pêş yê din dimîne) bistînin. Berê, wergirtina vê agahiyê du fermanên cihêreng hewce dikir: "git rev-list --count main..my-feature" ji bo bidestxistina hejmara peywiran a yekta şaxek, û "git rev-list --count my-feature.. sereke" ji bo bidestxistina hejmara komîteyên winda. Naha hesabên weha dikarin bi rêwerzek yekane werin kêm kirin, ku kargêrên nivîsandinê hêsan dike û dema darvekirinê kêm dike. Mînakî, ji bo ku şaxên neyekbûyî nîşan bidin û binirxînin ka ew li paş an li pêş şaxa xwe ya sereke ne, hûn dikarin yek-xêzek bikar bînin: $ git for-each-ref --no-merged=origin/HEAD \ --format=' %(refname:kurt) %(pêş-paş :origin/HEAD)' \ refs/heads/tb/ | column -t tb/cruft-extra-tips 2 96 tb/for-her-ref-16 96 tb/roaring-bitmaps 47 3 li şûna skrîpta berê hatî bikar anîn, ku 17 carî hêdîtir e: $ git ji bo-her-ref - format='%(refname:kurt)' --no-merged=origin/HEAD \ refs/heads/tb | dema ku ref bixwîne pêş de bike = "$(git rev-list --count origin/HEAD..$ref)" paş="$(git rev-list --count $ref..origin/HEAD)" printf "%s %d %d\n" "$ref" "$pêş" "$paş" kirin | stûn -t tb / cruft-extra-tips 2 96 tb / ji bo-her-ref-dervekirin 16 96 tb / roaring-bitmaps 47 3
  • Vebijarka "--porselen" li fermana "git fetch" zêde kir, ku encam di forma " ", kêm tê xwendin, lê ji bo parkirina di nivîsan de hêsantir.
  • Mîhenga "fetch.hideRefs" lê zêde kir da ku operasyonên "git fetch" bilez bike bi veşartina beşek ji girêdanên di depoya herêmî de di qonaxa kontrolkirinê de ka server tevaya tiştan şandiye an na, ku bi sînorkirina kontrolê tenê ji pêşkêşkeran re dem xilas dike. ku daneyên rasterast jê têne wergirtin. Mînakî, dema ceribandina li ser pergalek bi depoyên ku tê de hejmareke mezin ji girêdanên derveyî hatine şopandin vedihewîne, ji bilî yên ku ji bo servera hedefa dûr a $ hatine navnîş kirin, operasyona "git fetch" ji 20 hûrdem daxist 30 saniyeyan. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remotes/$remote \ fetch $dûr
  • Fermana "git fsck" şiyana kontrolkirina gendeliyê, berhevdana berhevokê, û rastbûna nirxan di bitmapên gihîştinê û navnîşên berevajî de pêk tîne.
  • Fermana "git clone --local" naha dema ku hewl dide ku ji depoyek ku girêdanên sembolîk di hundurê $GIT_DIR de vedihewîne kopî bike xeletiyek nîşan dide.

Source: opennet.ru

Add a comment