Git 2.26 banatutako iturri-kontrol sistemaren kaleratzea

Eskuragarri iturburu-kontrol sistema banatua askatzea Git 2.26.0. Git bertsioak kontrolatzeko sistema ezagunenetako, fidagarri eta errendimendu handikoenetako bat da, adarkatze eta bategitean oinarritutako garapen-tresna ez-lineal malguak eskaintzen ditu. Historiaren osotasuna eta aldaketa atzerakoiekiko erresistentzia bermatzeko, aurreko historia osoaren hashing inplizitua erabiltzen da konpromiso bakoitzean; gainera, etiketa eta konpromisoak garatzaileen sinadura digitalarekin ziurta daitezke.

Aurreko bertsioarekin alderatuta, bertsio berriak 504 aldaketa izan zituen, 64 garatzaileren parte-hartzearekin prestatuak, eta horietatik 12k garapenean parte hartu zuten lehen aldiz. Nagusia berrikuntzak:

  • Lehenespenera aldatu da bigarren bertsioa Git komunikazio-protokoloa, bezero bat urrunetik Git zerbitzari batera konektatzen denean erabiltzen dena. Protokoloaren bigarren bertsioa zerbitzariaren aldean adarrak eta etiketak iragazteko gaitasuna eskaintzeagatik nabarmentzen da, bezeroari esteken zerrenda laburtua itzuliz. Aurretik, edozein tira komandoak beti bidaliko zion bezeroari biltegi osoko erreferentzia-zerrenda osoa, bezeroak adar bat bakarrik eguneratzen ari zenean edo biltegiaren kopia eguneratuta zegoela egiaztatzen bazuen ere. Beste berrikuntza aipagarri bat protokoloari gaitasun berriak gehitzeko gaitasuna da, tresna-kutxan funtzionalitate berriak eskuragarri dauden heinean. Bezero-kodeak protokolo zaharrarekin bateragarria izaten jarraitzen du eta zerbitzari berriekin zein zaharrekin lanean jarrai dezake, automatikoki lehen bertsiora itzuliz zerbitzariak bigarrena onartzen ez badu.
  • "-show-scope" aukera "git config" komandoari gehitu zaio, ezarpen jakin batzuk definitzen diren lekua identifikatzea erraztuz. Git-ek ezarpenak hainbat lekutan definitzeko aukera ematen du: biltegian (.git/info/config), erabiltzailearen direktorioan (~/.gitconfig), sistema osorako konfigurazio fitxategian (/etc/gitconfig) eta komandoaren bidez. lerro-aukerak eta ingurune-aldagaiak. "git config" exekutatzean nahiko zaila da nahi den ezarpena zehazki non definitzen den ulertzea. Arazo hau konpontzeko, "--show-origin" aukera zegoen erabilgarri, baina ezarpena definituta dagoen fitxategirako bidea bakarrik erakusten du, eta hori erabilgarria da fitxategia editatu nahi baduzu, baina ez du laguntzen. balioa "git config" bidez aldatu behar da "--system", "--global" edo "-local" aukerak erabiliz. "--show-scope" aukera berriak definizio aldagaiaren testuingurua bistaratzen du eta -show-origin-ekin batera erabil daiteke:

    $ git --list --show-scope --show-origin
    fitxategi globala:/home/user/.gitconfig diff.interhunkcontext=1
    fitxategi globala:/home/user/.gitconfig push.default=current
    […] local file:.git/config branch.master.remote=origin
    fitxategi lokala:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    global diff.statgraphwidth 35
    tokiko ezberdina.kolore mugitu lautada

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

  • Lotura-ezarpenetan kredentzialak URLetan maskarak erabiltzea onartzen da. Git-en edozein HTTP ezarpen eta kredentzial ezar daitezke konexio guztietarako (http.extraHeader, credential.helper) eta URLetan oinarritutako konexioetarako (credential.https://example.com.helper, credential.https: //example). com.laguntzailea). Orain arte, *.example.com bezalako komodinak HTTP ezarpenetarako soilik onartzen ziren, baina ez ziren onartzen kredentzialak lotzeko. Git 2.26-n, desberdintasun hauek ezabatzen dira eta, adibidez, erabiltzaile-izena azpidomeinu guztiei lotzeko orain zehaztu dezakezu:

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

    erabiltzaile izena = ttaylorr

  • Klonazio partzialerako (klon partzialak) euskarri esperimentalaren hedapenak aurrera jarraitzen du, datuen zati bat bakarrik transferitzeko eta biltegiaren kopia osatugabe batekin lan egiteko aukera emanez. Bertsio berriak "git sparse-checkout add" komando berri bat gehitzen du, eta horrek direktorio indibidualak gehitzeko aukera ematen du "checkout" eragiketa laneko zuhaitzaren zati batean soilik aplikatzeko, "git komandoaren bidez direktorio guztiak aldi berean zerrendatu beharrean". sparse-checkout set" (banaka direktorio bat gehi dezakezu, zerrenda osoa berriro zehaztu gabe).
    Esate baterako, git/git biltegi bat klonatzeko blob-ak konprometitu gabe, laneko kopiaren erro-direktoriora soilik mugatuz eta "t" eta "Dokumentazioa" direktorioetarako checkout bereizita markatuz, zehaztu dezakezu:

    $ git clone --filter=blob:none --sparse [posta elektroniko bidez babestua]:git/git.git

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

    $ git sparse-checkout gehitu t
    ....
    $ git sparse-checkout gehitu dokumentazioa
    ....
    $ git sparse-checkout zerrenda
    Dokumentazio
    t

  • "git grep" komandoaren errendimendua, biltegiaren uneko edukiak zein berrikuspen historikoak bilatzeko erabiltzen dena, nabarmen hobetu da. Bilaketa bizkortzeko, laneko zuhaitzaren edukia eskaneatu ahal izan zen hainbat hari erabiliz (β€œgit grep –threads”), baina berrikuspen historikoetan bilaketa hari bakarrekoa zen. Orain muga hori kendu egin da objektuen biltegitik irakurketa eragiketak paralelizatzeko gaitasuna ezarriz. Lehenespenez, hari kopurua PUZaren nukleoen kopuruaren berdina ezartzen da, eta, kasu gehienetan, ez du eskatzen "-threads" aukera esplizituki ezartzea.
  • Azpikomandoen, bideen, esteken eta "git worktree" komandoaren beste argumentuen sarrera automatikoki osatzeko euskarria gehitu da, eta horrek biltegiaren laneko hainbat kopiekin lan egiteko aukera ematen du.
  • ANSI ihes-sekuentziak dituzten kolore distiratsuetarako laguntza gehitu da. Adibidez, nabarmentzeko koloreen ezarpenetan "git config -color" edo "git diff -color-moved" "%C(brightblue)" zehaztu dezakezu urdin distiratsurako "--format" aukeraren bidez.
  • Gidoiaren bertsio berria gehitu da fsmonitor-watchman, mekanismoarekin integrazioa eskainiz Facebook Watchman fitxategien aldaketen jarraipena eta fitxategi berrien agerpena azkartzeko. git eguneratu ondoren beharrezkoa da ordeztu engantxatu biltegian.
  • Bitmapak erabiltzean klon partzialak bizkortzeko optimizazioak gehitu dira
    (bitmapen makineria) irteera iragaztean objektu guztien bilaketa osoa saihesteko. Klonazio partzialean blob (β€”filter=blob:none eta β€”filter=blob:limit=n) egiaztatzea egiten da orain
    nabarmen azkarrago. GitHub-ek optimizazio hauekin eta klonazio partzialerako laguntza esperimentalarekin adabakiak iragarri zituen.

  • "Git rebase" komandoa beste backend batera eraman da, "batere" mekanismo lehenetsia erabiliz (lehen "rebase -i"-rako erabiltzen zena) "adabaki+aplikatu" beharrean. Backend-ak modu txiki batzuetan desberdinak dira, adibidez, gatazka bat konpondu ondoren eragiketa bat jarraitu ondoren (git rebase --continue), backend berriak konpromiso-mezua editatzea eskaintzen du, zaharrak mezu zaharra besterik ez zuen erabiltzen. Portaera zaharrera itzultzeko, "--apply" aukera erabil dezakezu edo "rebase.backend" konfigurazio-aldagaia "aplikatu" gisa ezar dezakezu.
  • .netrc bidez zehaztutako autentifikazio-parametroen kudeatzaile baten adibide bat kaxatik kanpo erabiltzeko egokia den inprimaki batera murriztu da.
  • gpg.minTrustLevel ezarpena gehitu da sinadura digitalaren egiaztapena egiten duten hainbat elementuren gutxieneko konfiantza maila ezartzeko.
  • "--pathspec-from-file" aukera gehitu da "git rm" eta "git stash"-i.
  • Proba-multzoen hobekuntzak jarraitu zuen SHA-2 hashing algoritmorako trantsizioan SHA-1-en ordez.

Iturria: opennet.ru

Gehitu iruzkin berria