Llançament del sistema de control de font distribuït Git 2.26

Disponible llançament d'un sistema de control de font distribuït Git 2.26.0. Git és un dels sistemes de control de versions més populars, fiables i d'alt rendiment, que ofereix eines de desenvolupament flexibles no lineals basades en ramificacions i fusions. Per garantir la integritat de l'historial i la resistència als canvis retroactius, en cada commit s'utilitza el hashing implícit de tot l'historial anterior; també és possible certificar etiquetes i commits individuals amb signatures digitals dels desenvolupadors.

En comparació amb la versió anterior, la nova versió va incloure 504 canvis, preparats amb la participació de 64 desenvolupadors, dels quals 12 van participar en el desenvolupament per primera vegada. El principal innovacions:

  • S'ha canviat el valor predeterminat segona versió Protocol de comunicació Git, que s'utilitza quan un client es connecta de forma remota a un servidor Git. La segona versió del protocol destaca per oferir la possibilitat de filtrar branques i etiquetes al costat del servidor, retornant una llista escurçada d'enllaços al client. Anteriorment, qualsevol ordre d'extracció enviava sempre al client la llista completa de referències a tot el repositori, fins i tot quan el client només estava actualitzant una branca o comprovant que la seva còpia del dipòsit estava actualitzada. Una altra innovació notable és la possibilitat d'afegir noves capacitats al protocol a mesura que es disposi de noves funcionalitats al conjunt d'eines. El codi de client segueix sent compatible amb el protocol antic i pot continuar funcionant amb servidors nous i antics, tornant automàticament a la primera versió si el servidor no admet la segona.
  • L'opció "-show-scope" s'ha afegit a l'ordre "git config", per la qual cosa és més fàcil identificar el lloc on es defineixen determinades configuracions. Git us permet definir la configuració en diferents llocs: al repositori (.git/info/config), al directori d'usuaris (~/.gitconfig), al fitxer de configuració de tot el sistema (/etc/gitconfig) i mitjançant l'ordre. opcions de línia i variables d'entorn. Quan s'executa "git config" és bastant difícil entendre on es defineix exactament la configuració desitjada. Per resoldre aquest problema, l'opció "--mostra-origen" estava disponible, però només mostra el camí del fitxer en què es defineix la configuració, cosa que és útil si voleu editar el fitxer, però no ajuda si cal canviar el valor mitjançant "git config" utilitzant les opcions "--system", "--global" o "-local". La nova opció "--show-scope" mostra el context de definició de variables i es pot utilitzar juntament amb -show-origin:

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

    $ git config --show-scope --get-regexp 'diff.*'
    global diff.statgraphwidth 35
    local diff.colormoved plana

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

  • A la configuració d'enquadernació credencials Es permet l'ús de màscares a les URL. Qualsevol configuració i credencials HTTP a Git es poden configurar tant per a totes les connexions (http.extraHeader, credential.helper) com per a connexions basades en URL (credential.https://example.com.helper, credential.https: //example. com.helper). Fins ara, els comodins com ara *.example.com només es permetien per a la configuració HTTP, però no s'admeten per a l'enllaç de credencials. A Git 2.26, aquestes diferències s'eliminen i, per exemple, per vincular un nom d'usuari a tots els subdominis ara podeu especificar:

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

    nom d'usuari = ttaylorr

  • L'expansió del suport experimental per a la clonació parcial (clons parcials) continua, la qual cosa us permet transferir només una part de les dades i treballar amb una còpia incompleta del dipòsit. La nova versió afegeix una nova ordre "git sparse-checkout add", que us permet afegir directoris individuals per aplicar l'operació "checkout" només a una part de l'arbre de treball, en lloc d'enumerar tots aquests directoris alhora mitjançant l'ordre "git". sparse-checkout set" (podeu afegir un per un directori, sense tornar a especificar tota la llista cada vegada).
    Per exemple, per clonar un repositori git/git sense cometre blobs, limitant el checkout només al directori arrel de la còpia de treball i marcant per separat el checkout per als directoris "t" i "Documentation", podeu especificar:

    $ git clone --filter=blob:none --sparse [protegit per correu electrònic]:git/git.git

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

    $ git sparse-checkout afegir t
    ....
    $ git sparse-checkout afegir documentació
    ....
    $ git llista de pagament escàs
    documentació
    t

  • El rendiment de l'ordre "git grep", que s'utilitza per cercar tant el contingut actual del repositori com les revisions històriques, s'ha millorat significativament. Per accelerar la cerca, era possible escanejar el contingut de l'arbre de treball mitjançant diversos fils ("git grep -threads"), però la cerca en revisions històriques era d'un sol fil. Ara aquesta limitació s'ha eliminat mitjançant la implementació de la capacitat de paral·lelitzar les operacions de lectura des de l'emmagatzematge d'objectes. De manera predeterminada, el nombre de fils s'estableix igual al nombre de nuclis de CPU, que en la majoria dels casos ara no requereix establir explícitament l'opció "-threads".
  • S'ha afegit suport per a la compleció automàtica d'entrada de subordres, camins, enllaços i altres arguments de l'ordre "git worktree", que us permet treballar amb diverses còpies de treball del dipòsit.
  • S'ha afegit suport per a colors brillants que tenen seqüències d'escapament ANSI. Per exemple, a la configuració dels colors destacats “git config –color” o “git diff –color-moved” podeu especificar “%C(brightblue)” mitjançant l'opció “--format” per al blau brillant.
  • S'ha afegit una nova versió del guió fsmonitor-vigilant, proporcionant integració amb el mecanisme Vigilant de Facebook per accelerar el seguiment dels canvis de fitxers i l'aparició de nous fitxers. Després d'actualitzar git és necessari per reemplaçar enganxar al repositori.
  • S'han afegit optimitzacions per accelerar els clons parcials quan s'utilitzen mapes de bits
    (maquinària de mapa de bits) per evitar una cerca completa de tots els objectes en filtrar la sortida. Ara es realitza la comprovació de taques (—filter=blob:none i —filter=blob:limit=n) durant la clonació parcial.
    significativament més ràpid. GitHub va anunciar pedaços amb aquestes optimitzacions i suport experimental per a la clonació parcial.

  • L'ordre "git rebase" s'ha mogut a un backend diferent, utilitzant el mecanisme predeterminat "merge" (utilitzat anteriorment per a "rebase -i") en lloc de "patch+apply". Els backends difereixen en alguns aspectes petits, per exemple, després de continuar una operació després de resoldre un conflicte (git rebase --continue), el nou backend ofereix editar el missatge de confirmació, mentre que l'antic simplement utilitzava el missatge antic. Per tornar al comportament anterior, podeu utilitzar l'opció "--apply" o establir la variable de configuració "rebase.backend" a "aplicar".
  • Un exemple d'un controlador per als paràmetres d'autenticació especificats mitjançant .netrc s'ha reduït a un formulari adequat per utilitzar-lo de manera immediata.
  • S'ha afegit la configuració gpg.minTrustLevel per establir el nivell de confiança mínim per a diversos elements que realitzen la verificació de la signatura digital.
  • S'ha afegit l'opció "--pathspec-from-file" a "git rm" i "git stash".
  • La millora dels conjunts de proves va continuar en preparació per a la transició a l'algoritme hashing SHA-2 en lloc de SHA-1.

Font: opennet.ru

Afegeix comentari