Lëshimi i sistemit të kontrollit të burimit të shpërndarë Git 2.26

Në dispozicion lëshimi i sistemit të kontrollit të burimit të shpërndarë git 2.26.0. Git është një nga sistemet më të njohura, më të besueshme dhe me performancë të lartë të kontrollit të versioneve, duke ofruar mjete zhvillimi fleksibël jo-lineare të bazuara në degëzimin dhe bashkimin. Për të siguruar integritetin e historisë dhe rezistencën ndaj ndryshimeve retroaktive, hashimi i nënkuptuar i të gjithë historisë së mëparshme përdoret në çdo kryerje; është gjithashtu e mundur të certifikohen etiketat dhe detyrimet individuale me nënshkrime dixhitale të zhvilluesve.

Krahasuar me versionin e mëparshëm, 504 ndryshime u pranuan në versionin e ri, të përgatitur me pjesëmarrjen e 64 zhvilluesve, nga të cilët 12 morën pjesë në zhvillim për herë të parë. Kryesore risitë:

  • Parazgjedhja është kaluar në versioni i dytë Protokolli i komunikimit Git, i cili përdoret kur një klient lidhet nga distanca me një server Git. Versioni i dytë i protokollit është i dukshëm për ofrimin e aftësisë për të filtruar degët dhe etiketat në anën e serverit, duke i kthyer klientit një listë të shkurtuar lidhjesh. Më parë, çdo komandë tërheqëse do t'i dërgonte gjithmonë klientit listën e plotë të referencave në të gjithë depon, edhe kur klienti po përditësonte vetëm një degë ose po kontrollonte nëse kopja e tij e depove ishte e përditësuar. Një tjetër risi e dukshme është aftësia për të shtuar aftësi të reja në protokoll pasi funksionaliteti i ri bëhet i disponueshëm në paketën e veglave. Kodi i klientit mbetet i pajtueshëm me protokollin e vjetër dhe mund të vazhdojë të punojë me serverët e rinj dhe të vjetër, duke u kthyer automatikisht në versionin e parë nëse serveri nuk e mbështet të dytin.
  • Opsioni "-show-scope" është shtuar në komandën "git config", duke e bërë më të lehtë identifikimin e vendit ku përcaktohen disa cilësime. Git ju lejon të përcaktoni cilësimet në vende të ndryshme: në depo (.git/info/config), në drejtorinë e përdoruesit (~/.gitconfig), në skedarin e konfigurimit në të gjithë sistemin (/etc/gitconfig) dhe përmes komandës opsionet e linjës dhe variablat e mjedisit. Gjatë ekzekutimit të "git config" është mjaft e vështirë të kuptosh se ku është përcaktuar saktësisht cilësimi i dëshiruar. Për të zgjidhur këtë problem, opsioni "--show-origin" ishte i disponueshëm, por ai tregon vetëm shtegun drejt skedarit në të cilin është përcaktuar cilësimi, i cili është i dobishëm nëse keni ndërmend të redaktoni skedarin, por nuk ju ndihmon nëse duhet të ndryshoni vlerën përmes "git config" duke përdorur opsionet "--system", "--global" ose "-local". Opsioni i ri "--show-scope" shfaq kontekstin e përkufizimit të ndryshores dhe mund të përdoret në lidhje me -show-origin:

    $ git --list --show-scope --show-origin
    skedari global:/home/user/.gitconfig diff.interhunkcontext=1
    skedari global:/home/user/.gitconfig push.default=aktual
    […] local file:.git/config branch.master.remote=origin
    skedar lokal:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'ndryshim.*'
    global diff.statgraphwidth 35
    ndryshim lokal.rrafsh i zhvendosur me ngjyrë

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

  • Në cilësimet e lidhjes kredencialet Përdorimi i maskave në URL lejohet. Çdo cilësim dhe kredenciale HTTP në Git mund të vendoset si për të gjitha lidhjet (http.extraHeader, credential.helper) ashtu edhe për lidhjet e bazuara në URL (credential.https://example.com.helper, credential.https: //shembull. com.ndihmës). Deri tani, shkronjat e egra si *.example.com lejoheshin vetëm për cilësimet e HTTP, por nuk mbështeteshin për lidhjen e kredencialeve. Në Git 2.26, këto dallime eliminohen dhe, për shembull, për të lidhur një emër përdoruesi me të gjitha nënfushat, tani mund të specifikoni:

    [kredencialet "https://*.example.com"]

    emri i përdoruesit = ttaylorr

  • Zgjerimi i mbështetjes eksperimentale për klonimin e pjesshëm (klone të pjesshme) vazhdon, duke ju lejuar të transferoni vetëm një pjesë të të dhënave dhe të punoni me një kopje jo të plotë të depove. Publikimi i ri shton një komandë të re "git sparse-checkout add", e cila ju lejon të shtoni direktori individuale për të aplikuar operacionin "checkout" vetëm në një pjesë të pemës së punës, në vend që të listoni të gjitha drejtoritë e tilla menjëherë përmes komandës "git set me arkë të rrallë" (mund të shtoni një nga një drejtori, pa e rispecifikuar të gjithë listën çdo herë).
    Për shembull, për të klonuar një depo git/git pa kryer blobs, duke kufizuar arkëtimin vetëm në direktorinë rrënjë të kopjes së punës dhe duke shënuar veçmas arkën për drejtoritë "t" dhe "Dokumentacioni", mund të specifikoni:

    $ git klon --filter=blob:asnjë --sparse [email mbrojtur]:git/git.git

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

    $ git rrall-arkesë shtoni t
    ....
    $ git sparse-checkout add Documentation
    ....
    $ git listë e rralluar
    dokumentim
    t

  • Performanca e komandës "git grep", e përdorur për të kërkuar si në përmbajtjen aktuale të depove ashtu edhe në rishikimet historike, është përmirësuar ndjeshëm. Për të përshpejtuar kërkimin, ishte e mundur të skanohej përmbajtja e pemës së punës duke përdorur fije të shumta (“git grep –threads”), por kërkimi në rishikimet historike ishte me një fije. Tani ky kufizim është hequr duke zbatuar aftësinë për të paralelizuar operacionet e leximit nga ruajtja e objektit. Si parazgjedhje, numri i thread-eve është vendosur i barabartë me numrin e bërthamave të CPU-së, gjë që në shumicën e rasteve tani nuk kërkon vendosjen e qartë të opsionit "-threads".
  • Mbështetje e shtuar për plotësimin automatik të hyrjes së nënkomandave, shtigjeve, lidhjeve dhe argumenteve të tjera të komandës "git worktree", e cila ju lejon të punoni me disa kopje pune të depove.
  • Mbështetje e shtuar për ngjyrat e ndritshme që kanë sekuenca ikjeje ANSI. Për shembull, në cilësimet për ngjyrat e theksuara “git config –color” ose “git diff –color-moved” ju mund të specifikoni “%C(brightblue)” nëpërmjet opsionit “--format” për blu të ndezur.
  • U shtua një version i ri i skenarit fsmonitor-rojtar, duke siguruar integrim me mekanizmin Rojtari i Facebook për të shpejtuar ndjekjen e ndryshimeve të skedarëve dhe shfaqjen e skedarëve të rinj. Pas përditësimit, kërkohet git për të zëvendësuar fiksohem në depo.
  • Optimizime të shtuara për të përshpejtuar klonimet e pjesshme kur përdorni bitmaps
    (makineri bitmap) për të shmangur një kërkim të plotë të të gjitha objekteve gjatë filtrimit të daljes. Kontrolli për njolla (—filter=blob:none dhe —filter=blob:limit=n) gjatë klonimit të pjesshëm tani është kryer
    dukshëm më shpejt. GitHub njoftoi arna me këto optimizime dhe mbështetje eksperimentale për klonimin e pjesshëm.

  • Komanda "git rebase" është zhvendosur në një prapavijë tjetër, duke përdorur mekanizmin e parazgjedhur "bashkimi" (i përdorur më parë për "rebase -i") në vend të "patch+apply". Backend-et ndryshojnë në disa mënyra të vogla, për shembull, pas vazhdimit të një operacioni pas zgjidhjes së një konflikti (git rebase --continue), backend-i i ri ofron për të redaktuar mesazhin commit, ndërsa i vjetri thjesht përdori mesazhin e vjetër. Për t'u kthyer në sjelljen e vjetër, mund të përdorni opsionin "--aplikoni" ose të vendosni variablin e konfigurimit "rebase.backend" në "aplikoni".
  • Një shembull i një mbajtësi për parametrat e vërtetimit të specifikuar nëpërmjet .netrc është reduktuar në një formë të përshtatshme për t'u përdorur jashtë kutisë.
  • U shtua cilësimi gpg.minTrustLevel për të vendosur nivelin minimal të besimit për elementë të ndryshëm që kryejnë verifikimin e nënshkrimit dixhital.
  • U shtua opsioni "--pathspec-from-file" në "git rm" dhe "git stash".
  • Përmirësimi i grupeve të testimit vazhdoi në përgatitjen për kalimin në algoritmin e hashimit SHA-2 në vend të SHA-1.

Burimi: opennet.ru

Shto një koment