Liberigo de distribuita fontkontrolsistemo Git 2.26

Disponebla liberigo de la distribuata fontkontrolsistemo git 2.26.0. Git estas unu el la plej popularaj, fidindaj kaj alt-efikecaj versikontrolaj sistemoj, kiu disponigas flekseblajn ne-liniajn evoluilojn bazitajn sur disbranĉiĝo kaj kunfandado de branĉoj. Por certigi la integrecon de la historio kaj reziston al retroaktivaj ŝanĝoj, implicita hashing de la tuta antaŭa historio en ĉiu kommit estas uzata, ankaŭ eblas kontroli individuajn etikedojn kaj kommitaĵojn per ciferecaj subskriboj de la programistoj.

Kompare kun la antaŭa eldono, la nova versio inkludis 504 ŝanĝojn, preparitajn kun la partopreno de 64 programistoj, el kiuj 12 partoprenis en evoluo por la unua fojo. Ĉefa novigoj:

  • La defaŭlto estis ŝanĝita al dua versio Git-komunika protokolo, kiu estas uzata kiam kliento malproksime konektas al Git-servilo. La dua versio de la protokolo estas rimarkinda pro disponigado de la kapablo filtri branĉojn kaj etikedojn ĉe la servilflanko, resendante mallongigitan liston de ligiloj al la kliento. Antaŭe, ajna tira komando ĉiam sendus al la kliento la plenan liston de referencoj en la tuta deponejo, eĉ kiam la kliento nur ĝisdatigis unu branĉon aŭ kontrolis ke ilia kopio de la deponejo estas ĝisdatigita. Alia rimarkinda novigado estas la kapablo aldoni novajn kapablojn al la protokolo kiam nova funkcieco iĝas havebla en la ilaro. La klientokodo restas kongrua kun la malnova protokolo kaj povas daŭre labori kun kaj novaj kaj malnovaj serviloj, aŭtomate revenante al la unua versio se la servilo ne subtenas la duan.
  • La opcio "-show-scope" estis aldonita al la komando "git config", faciligante identigi la lokon, kie certaj agordoj estas difinitaj. Git permesas difini agordojn en malsamaj lokoj: en la deponejo (.git/info/config), en la uzantdosierujo (~/.gitconfig), en la tutsistema agorda dosiero (/etc/gitconfig), kaj per komando linio-opcioj kaj mediaj variabloj. Dum ekzekuto de "git config" estas sufiĉe malfacile kompreni, kie ĝuste la dezirata agordo estas difinita. Por solvi ĉi tiun problemon, la opcio "--show-origin" estis disponebla, sed ĝi nur montras la vojon al la dosiero en kiu la agordo estas difinita, kio estas utila se vi intencas redakti la dosieron, sed ne helpas se vi bezonas ŝanĝi la valoron per "git config" uzante opciojn "--system", "--global" aŭ "-local". La nova opcio "--show-scope" montras la variadifinan kuntekston kaj povas esti uzata kune kun -show-origin:

    $ git --list --show-scope --show-origin
    tutmonda dosiero:/home/user/.gitconfig diff.interhunkcontext=1
    tutmonda dosiero:/home/user/.gitconfig push.default=current
    […] loka dosiero:.git/config branch.master.remote=origin
    loka dosiero:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    tutmonda diff.statgraphwidth 35
    loka dif.koloromovita ebenaĵo

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

  • En la devigaj agordoj akreditaĵojn La uzo de maskoj en URL-oj estas permesita. Ĉiuj HTTP-agordoj kaj akreditaĵoj en Git povas esti agordita kaj por ĉiuj konektoj (http.extraHeader, credential.helper) kaj por URL-bazitaj ligoj (credential.https://example.com.helper, credential.https: //example. com.helpanto). Ĝis nun, ĵokeroj kiel *.example.com estis permesitaj nur por HTTP-agordoj, sed ne estis subtenataj por akreditligo. En Git 2.26, ĉi tiuj diferencoj estas forigitaj kaj, ekzemple, por ligi uzantnomon al ĉiuj subdomajnoj, kiujn vi nun povas specifi:

    [akreditaĵo "https://*.example.com"]

    uzantnomo = ttaylorr

  • La ekspansio de eksperimenta subteno por parta klonado (partaj klonoj) daŭras, permesante al vi transdoni nur parton de la datumoj kaj labori kun nekompleta kopio de la deponejo. La nova eldono aldonas novan komandon "git sparse-checkout add", kiu ebligas al vi aldoni individuajn dosierujojn por apliki la "checkout" operacion al nur parto de la laboranta arbo, anstataŭ listigi ĉiujn tiajn dosierujojn samtempe per la komando "git". sparse-checkout set" (vi povas aldoni unuope unu dosierujon, sen respecifi la tutan liston ĉiufoje).
    Ekzemple, por kloni git/git-deponejon sen fari blobojn, limigante elaĉeton al nur la radika dosierujo de la laborkopio, kaj aparte markante elŝuton por la dosierujoj "t" kaj "Dokumentado", vi povus specifi:

    $ git clone --filter=blob:none --sparse [retpoŝte protektita]:git/git.git

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

    $ git sparse-checkout aldoni t
    ....
    $ git sparse-checkout aldoni Dokumentadon
    ....
    $ git maldensa-kontrola listo
    Dokumentoj
    t

  • La agado de la komando "git grep", uzata por serĉi kaj la nunan enhavon de la deponejo kaj historiajn reviziojn, estis signife plibonigita. Por akceli la serĉon, eblis skani la enhavon de la laboranta arbo uzante plurajn fadenojn ("git grep -threads"), sed la serĉo en historiaj revizioj estis unufadena. Nun ĉi tiu limigo estis forigita efektivigante la kapablon paraleligi legadoperaciojn de la objektostokado. Defaŭlte, la nombro da fadenoj estas agordita egala al la nombro da CPU-kernoj, kiu en la plej multaj kazoj nun ne postulas eksplicite agordi la opcion "-fadenoj".
  • Aldonita subteno por aŭtomata kompletigo de enigo de subkomandoj, vojoj, ligiloj kaj aliaj argumentoj de la komando "git worktree", kiu permesas vin labori kun pluraj funkciaj kopioj de la deponejo.
  • Aldonita subteno por helaj koloroj, kiuj havas ANSI-fuĝsekvencojn. Ekzemple, en la agordoj por reliefaj koloroj “git config –color” aŭ “git diff –color-moved” vi povas specifi “%C(brightblue)” per la opcio “--format” por hela bluo.
  • Aldonita nova versio de skripto fsmonitor-watchman, disponigante integriĝon kun la mekanismo Fejsbuka Gardisto por akceli spuradon de dosierŝanĝoj kaj la apero de novaj dosieroj. Post ĝisdatigo git estas bezonata anstataŭigi hoko en la deponejo.
  • Aldonitaj optimumigoj por akceli partajn klonojn kiam vi uzas bitmapojn
    (bitmapa maŝinaro) por eviti kompletan serĉon de ĉiuj objektoj dum filtrado de la eligo. Kontrolado de blobs (—filter=blob:none kaj —filter=blob:limit=n) dum parta klonado nun estas farita
    signife pli rapide. GitHub anoncis diakilojn kun ĉi tiuj optimumigoj kaj eksperimenta subteno por parta klonado.

  • La komando "git rebase" estis movita al malsama backend, uzante la defaŭltan 'kunfandi'-mekanismon (antaŭe uzatan por "rebase -i") anstataŭ 'patch+apply'. La backends malsamas en kelkaj malgrandaj manieroj, ekzemple, post daŭrigado de operacio post solvado de konflikto (git rebase --continue), la nova backend proponas redakti la kommitmesaĝon, dum la malnova simple uzis la malnovan mesaĝon. Por reveni al la malnova konduto, vi povas uzi la opcion "--apply" aŭ agordi la agordan variablon 'rebase.backend' al 'apliki'.
  • Ekzemplo de pritraktilo por aŭtentikigparametroj specifitaj per .netrc estis reduktita al formo taŭga por uzo el la skatolo.
  • Aldonis la agordon gpg.minTrustLevel por agordi la minimuman fidan nivelon por diversaj elementoj, kiuj realigas kontrolon de cifereca subskribo.
  • Aldonita "--pathspec-from-file" opcio al "git rm" kaj "git stash".
  • Pliboniĝo de testaj serioj daŭris en preparo por la transiro al la SHA-2 haŝalgoritmo anstataŭe de SHA-1.

fonto: opennet.ru

Aldoni komenton