Liberazione di u sistema di cuntrollu di fonte distribuitu Git 2.26

Dispunibule liberazione di un sistema di cuntrollu di fonte distribuitu git 2.26.0. Git hè unu di i sistemi di cuntrollu di versione più populari, affidabili è d'altu rendiment, chì furnisce strumenti di sviluppu flexible non lineari basati in ramificazione è fusione. Per assicurà l'integrità di a storia è a resistenza à i cambiamenti retroattivi, l'hashing implicitu di tutta a storia precedente hè aduprata in ogni impegnu; hè ancu pussibule di certificà e tag individuali è impegni cù signature digitale di i sviluppatori.

In cunfrontu à a versione precedente, a nova versione include 504 cambiamenti, preparati cù a participazione di sviluppatori 64, di quale 12 hà participatu à u sviluppu per a prima volta. menu innovazioni:

  • U predeterminatu hè statu cambiatu seconda versione Protokollu di cumunicazione Git, chì hè utilizatu quandu un cliente si cunnetta remotamente à un servitore Git. A seconda versione di u protokollu hè notevule per furnisce l'abilità di filtrà rami è tag in u latu di u servitore, rinviendu una lista accurtata di ligami à u cliente. In precedenza, ogni cumandamentu di pull mandava sempre à u cliente a lista completa di referenze in tuttu u repositoriu, ancu quandu u cliente era solu aghjurnà una filiera o verificatu chì a so copia di u repositoriu era aghjurnata. Un'altra innuvazione notevole hè a capacità di aghjunghje novi capacità à u protocolu cum'è una nova funziunalità diventa dispunibule in u toolkit. U codice di u cliente resta cumpatibile cù u vechju protokollu è pò cuntinuà à travaglià cù i servitori novi è vechji, falendu automaticamente à a prima versione se u servitore ùn sustene micca a seconda.
  • L'opzione "-show-scope" hè stata aghjunta à u cumandamentu "git config", facendu più faciule per identificà u locu induve certi paràmetri sò definiti. Git permette di definisce i paràmetri in diversi lochi: in u repository (.git/info/config), in u cartulare di l'utilizatori (~/.gitconfig), in u schedariu di cunfigurazione in tuttu u sistema (/etc/gitconfig), è attraversu u cumandimu. opzioni di linea è variabili d'ambiente. Quandu eseguisce "git config" hè abbastanza difficiuli di capisce induve esattamente u paràmetru desideratu hè definitu. Per risolve stu prublema, l'opzione "--show-origin" era dispunibule, ma mostra solu u percorsu à u schedariu in u quale u paràmetru hè definitu, chì hè utile se avete intenzione di edità u schedariu, ma ùn aiuta micca sè vo avete. bisognu di cambià u valore attraversu "git config" cù l'opzioni "--system", "--global" o "-local". A nova opzione "--show-scope" mostra u cuntestu di definizione variabile è pò esse usata in cunghjunzione cù -show-origin:

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

    $ git config --show-scope --get-regexp 'diff.*'
    diff.statgraphwidth globale 35
    diff.locale pianura mudificata

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

  • In i paràmetri di ubligatoriu credenziali L'usu di maschere in URL hè permessu. Ogni paràmetru HTTP è credenziali in Git pò esse stabilitu sia per tutte e cunnessione (http.extraHeader, credential.helper) sia per e cunnessione basate in URL (credential.https://example.com.helper, credential.https://example.https://example.com). com.helper). Finu à avà, i caratteri cumeddi cum'è *.example.com sò stati permessi solu per i paràmetri HTTP, ma ùn sò micca supportati per u ligame di credenziali. In Git 2.26, sti diffirenzii sò eliminati è, per esempiu, per ligà un nome d'utilizatore à tutti i subdominii pudete avà specificà:

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

    username = ttaylorr

  • L'espansione di u supportu sperimentale per a clonazione parziale (cloni parziali) cuntinueghja, chì permette di trasfirià solu una parte di e dati è travaglià cù una copia incompleta di u repository. A nova versione aghjusta un novu cumandamentu "git sparse-checkout add", chì vi permette di aghjunghje cartulari individuali per applicà l'operazione "checkout" à solu una parte di l'arbulu di travagliu, invece di listinu tutti questi cartulari in una volta cù u cumandimu "git". sparse-checkout set" (pudete aghjunghje unu per un annuariu, senza rispecificà a lista sana ogni volta).
    Per esempiu, per clonà un repository git/git senza committe blobs, limitendu u checkout à solu u repertoriu radicale di a copia di travagliu, è marcà separatamente u checkout per i repertorii "t" è "Documentazione", pudete specificà:

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

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

    $ git sparse-checkout aghjunghje t
    ....
    $ git sparse-checkout aghjunghje Documentazione
    ....
    $ git sparse-checkout list
    ducumentazione in corsu
    t

  • U funziunamentu di u cumandamentu "git grep", utilizatu per ricercà u cuntenutu attuale di u repositoriu è e revisioni storichi, hè statu migliuratu significativamente. Per accelerà a ricerca, era pussibule di scansà u cuntenutu di l'arbulu di travagliu cù parechje fili ("git grep -threads"), ma a ricerca in rivisioni storichi era unicu. Avà sta limitazione hè stata eliminata implementendu a capacità di parallelizà l'operazioni di lettura da u almacenamentu di l'ughjettu. Per automaticamente, u nùmeru di fili hè uguali à u nùmeru di nuclei di CPU, chì in a maiò parte di i casi ùn hè micca bisognu di stabilisce esplicitamente l'opzione "-threads".
  • Aghjunghje supportu per l'autocompletion di input di subcumandamenti, percorsi, ligami è altri argumenti di u cumandamentu "git worktree", chì permette di travaglià cù parechje copie di travagliu di u repository.
  • Aghjunghje supportu per i culori brillanti chì anu sequenze di escape ANSI. Per esempiu, in i paràmetri per i culori di evidenziazione "git config -color" o "git diff -color-moved" pudete specificà "%C (brightblue)" via l'opzione "--format" per blu brillanti.
  • Aggiunta una nova versione di script fsmonitor-watchman, furnisce integrazione cù u mecanismu Facebook Watchman per accelerà u seguimentu di i cambiamenti di i schedari è l'apparizione di novi schedari. Dopu avè aghjurnatu git hè necessariu a sustituiri ganciu in u repository.
  • Ottimisazioni aghjunte per accelerà i cloni parziali quandu utilizanu bitmaps
    (macchinari bitmap) per evità una ricerca cumpleta di tutti l'uggetti quandu si filtra l'output. A verificazione di blob (—filter=blob:none è —filter=blob:limit=n) durante a clonazione parziale hè avà eseguita.
    significativamente più veloce. GitHub hà annunziatu patch cù queste ottimisazioni è supportu sperimentale per a clonazione parziale.

  • U cumandimu "git rebase" hè statu spustatu in un backend differente, utilizendu u mecanismu predeterminatu di "merge" (precedentemente utilizatu per "rebase -i") invece di "patch + apply". I backends sò diffirenti in certi modi petite, per esempiu, dopu à cuntinuà una operazione dopu à risolve un cunflittu (git rebase --continue), u novu backend offre à edità u missaghju cummit, mentri u vechju simpricimenti usatu u vechju missaghju. Per rinvià à u vechju cumpurtamentu, pudete aduprà l'opzione "--apply" o stabilisce a variabile di cunfigurazione "rebase.backend" à "applicà".
  • Un esempiu di un handler per i paràmetri di autentificazione specificati via .netrc hè stata ridutta à una forma adattata per l'usu fora di a scatula.
  • Aggiuntu l'impostazione gpg.minTrustLevel per stabilisce u livellu minimu di fiducia per parechji elementi chì realizanu a verificazione di a firma digitale.
  • Aggiunta l'opzione "--pathspec-from-file" à "git rm" è "git stash".
  • A migliione di e suite di teste hà continuatu in preparazione per a transizione à l'algoritmu di hashing SHA-2 invece di SHA-1.

Source: opennet.ru

Add a comment