Serbestberdana pergala kontrola çavkaniya belavkirî Git 2.26

Berdeste serbestberdana pergala kontrolê ya çavkaniya belavkirî git 2.26.0. 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 û hevgirtinê peyda dike. Ji bo misogerkirina yekrêziya dîrokê û berxwedana li hember guhertinên paşverû, di her commit de hejandina nepenî ya tevahiya dîroka berê tê bikar anîn; di heman demê de gengaz e ku bi îmzeyên dîjîtal ên pêşdebiran tag û peymanên kesane jî were pejirandin.

Li gorî serbestberdana berê, guhertoya nû 504 guhertin pêk tîne, ku bi beşdariya 64 pêşdebiran hatî amadekirin, ji wan 12 ji bo yekem car beşdarî pêşkeftinê bûn. sereke nûbûnên:

  • Vebijêrk hate guhertin guhertoya duyemîn Protokola pêwendiya Git, ya ku dema ku xerîdar ji dûr ve bi serverek Git ve tê bikar anîn. Guhertoya duyemîn a protokolê ji ber peydakirina şiyana fîlterkirina şax û nîşanan li ser milê serverê, vegerandina navnîşek kurtkirî ya girêdanan ji xerîdar re girîng e. Berê, her fermanek vekişînê dê her gav ji xerîdar re navnîşa tevahî referansên li tevahî depoyê bişîne, tewra dema ku xerîdar tenê şaxek nûve dikir an kontrol dikir ku kopiya depoya wan nûve ye. Nûbûnek din a balkêş ev e ku meriv kapasîteyên nû li protokolê zêde bike ji ber ku fonksiyonên nû di amûrê de peyda dibe. Koda xerîdar bi protokola kevn re hevaheng dimîne û dikare hem bi pêşkêşkerên nû û hem jî yên kevn re bixebite, ger server piştgirîya duyemîn neke bixweber vedigere guhertoya yekem.
  • Vebijarka "-show-scope" li fermana "git config" hate zêdekirin, ku nasandina cîhê ku hin mîhengan lê têne diyar kirin hêsantir dike. Git destûrê dide te ku hûn mîhengan li cîhên cihê diyar bikin: di depoyê de (.git/info/config), di pelrêça bikarhêner (~/.gitconfig), di pelê veavakirinê de li seranserê pergalê (/etc/gitconfig), û bi fermanê. vebijarkên line û guherbarên jîngehê. Dema ku hûn "git config" têne darve kirin, pir dijwar e ku meriv fêm bike ka bi rastî mîhenga xwestinê li ku tê diyar kirin. Ji bo çareserkirina vê pirsgirêkê, vebijarka "--show-origin" peyda bû, lê ew tenê riya pelê ya ku mîheng tê de hatî destnîşan kirin nîşan dide, ku heke hûn dixwazin pelê biguherînin kêrhatî ye, lê heke hûn Pêdivî ye ku nirxê bi "git config" bi karanîna vebijarkên "--system", "--global" an "-local" biguhezînin. Vebijarka nû "--show-scope" çarçoveya pênasekirina guhêrbar nîşan dide û dikare bi -show-origin re were bikar anîn:

    $ git --list --show-scope --show-origin
    pelê gerdûnî:/home/user/.gitconfig diff.interhunkcontext=1
    pelê gerdûnî:/home/user/.gitconfig push.default=current
    […] local file:.git/config branch.master.remote=origin
    pelê herêmî:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'cudahî.*'
    gerdûnî diff.statgraphwidth 35
    ciyawaziya herêmî.rengkirî deşt

    $ git config --global --unset diff.statgraphwidth

  • Di mîhengên girêdanê de şehadan Bikaranîna maskên di URLan de destûr e. Her mîheng û pêbaweriyên HTTP-ê yên di Git-ê de hem ji bo hemî girêdanan (http.extraHeader, credential.helper) hem jî ji bo girêdanên-based URL-ê (credential.https://example.com.helper, credential.https: //nimûne) têne danîn. com.alîkar). Heya nuha, qertên hov ên wekî *.example.com tenê ji bo mîhengên HTTP-ê destûr didan, lê ji bo girêdana pêbaweriyê nehatin piştgirî kirin. Di Git 2.26-ê de, ev cûdahî têne rakirin û, mînakî, ji bo girêdana navek bikarhêner bi hemî subdomainan re hûn dikarin niha diyar bikin:

    [bawermendî "https://*.example.com"]

    navê bikarhêner = ttaylorr

  • Berfirehbûna piştevaniya ceribandinê ya ji bo klonkirina qismî (klonên qismî) berdewam dike, ku dihêle hûn tenê beşek daneyê veguhezînin û bi kopiyek netemam a depoyê re bixebitin. Daxuyaniya nû fermanek nû "git sparse-checkout add" zêde dike, ku destûrê dide te ku hûn pelrêçikên kesane lê zêde bikin da ku operasyona "checkout" tenê li beşek ji dara xebatê bicîh bikin, li şûna ku hûn hemî pelrêçan bi yekcarî bi fermana "git" binivîsin. Sparse-checkout set" (hûn dikarin yek bi yek pelrêça lê zêde bikin, bêyî ku her carê tevahiya navnîşê ji nû ve diyar bikin).
    Mînakî, ji bo klonekirina depoyek git/git bêyî ku blokan bişopînin, veqetandinê tenê bi pelrêça root ya kopiya xebatê re sînordar bikin, û ji bo pelrêçanên "t" û "Belgekirinê" veqetandî nîşankirina danûstendinê, hûn dikarin diyar bikin:

    $ git clone --filter=blob:none --sparse [email parastî]:git/git.git

    $ cd git
    $ git sparse-checkout init --cone

    $ git sparse-checkout lê zêde bike t
    ....
    $ git sparse-checkout Belgekirin lê zêde bike
    ....
    $ git lîsteya sparse-checkout
    Documentation
    t

  • Performansa fermana "git grep", ku ji bo lêgerîna hem naveroka heyî ya depoyê û hem jî guhertoyên dîrokî tê bikar anîn, bi girîngî çêtir bûye. Ji bo bilezkirina lêgerînê, gengaz bû ku naveroka dara xebatê bi karanîna gelek têlan ("git grep -threads") bişopîne, lê lêgerîna di guhertoyên dîrokî de yek-têlek bû. Naha ev tixûb bi pêkanîna şiyana paralelkirina xebatên xwendinê ji depoya tiştan ve hatî rakirin. Ji hêla xwerû ve, hejmara têlan bi qasî hejmara navikên CPU-yê tê danîn, ku di pir rewşan de naha hewce nake ku bi eşkere vebijarka "-threads" were danîn.
  • Piştgiriyek ji bo temamkirina otomatîkî ya têketina jêr-ferman, rê, girêdan û argumanên din ên fermana "git worktree" zêde kir, ku dihêle hûn bi çend kopiyên xebatê yên depoyê re bixebitin.
  • Ji bo rengên geş ên ku rêzikên revê yên ANSI hene piştgirî zêde kirin. Mînakî, di mîhengên rengên ronîkirinê de "git config -color" an "git diff -color-moved" hûn dikarin bi vebijarka "--format" ji bo şîna geş diyar bikin "%C(brightblue)".
  • Guhertoya nû ya skrîptê lê zêde kir fsmonitor-watchman, entegrasyonê bi mekanîzmayê re peyda dike Facebook Watchman ji bo bilezkirina şopandina guhertinên pelan û xuyangkirina pelên nû. Piştî nûvekirina git hewce ye şûna di depoyê de çeng bikin.
  • Optimîzasyon lê zêde kirin da ku dema ku bitmaps bikar tînin klonên qismî lez bikin
    (makîneya bitmap) ji bo ku dema fîlterkirina derketinê ji lêgerînek bêkêmasî ya hemî tiştan dûr bikeve. Kontrolkirina kulîlkan (—filter=blob:none û —filter=blob:limit=n) di dema klonkirina qismî de niha tê kirin
    bi awayekî berbiçav zûtir. GitHub bi van optimîzasyonan û piştgirîya ceribandî ya ji bo klonkirina qismî pêçan ragihand.

  • Fermana "git rebase" li şûna "patch+apply" mekanîzmaya xwerû ya 'merge' bikar tîne (berê ji bo "rebase -i" dihat bikar anîn) veguheztin paşverûyek cûda. Piştgiran di hin awayên piçûk de cûda dibin, mînakî, piştî domandina operasyonek piştî çareserkirina pevçûnê (git rebase --dewam bike), paşnavê nû pêşkêşî guherandina peyama commit dike, dema ku ya kevin tenê peyama kevn bikar tîne. Ji bo vegerandina tevgera kevin, hûn dikarin vebijarka "--serîlêdanê" bikar bînin an jî guhêrbar veavakirina 'rebase.backend' bikin 'sepan.
  • Nimûneyek rêvekerek ji bo parametreyên erêkirinê yên ku bi riya .netrc ve hatine destnîşan kirin, ji bo karanîna derveyî guncan kêm bûye.
  • Mîhenga gpg.minTrustLevel lê zêde kir da ku asta pêbaweriya herî kêm ji bo hêmanên cihêreng ên ku verastkirina îmzeya dîjîtal pêk tînin destnîşan bike.
  • Vebijarka "--pathspec-from-file" li "git rm" û "git stash" zêde kir.
  • Pêşvebirina komên testê di amadekirina ji bo derbasbûna algorîtmaya hashing SHA-2 de li şûna SHA-1 berdewam kir.

Source: opennet.ru

Add a comment