Lanzamento do sistema de control de fonte distribuído Git 2.26

Dispoñible liberación dun sistema de control de fonte distribuído git 2.26.0. Git é un dos sistemas de control de versións máis populares, fiables e de alto rendemento, que ofrece ferramentas de desenvolvemento flexibles e non lineais baseadas en ramificación e fusión. Para garantir a integridade do historial e a resistencia aos cambios retroactivos, en cada commit utilízase o hash implícito de todo o historial anterior; tamén é posible certificar etiquetas e commits individuais con sinaturas dixitais dos desenvolvedores.

En comparación coa versión anterior, a nova versión incluía 504 cambios, elaborados coa participación de 64 desenvolvedores, dos cales 12 participaron no desenvolvemento por primeira vez. O principal innovacións:

  • Cambiouse ao valor predeterminado segunda versión Protocolo de comunicación Git, que se usa cando un cliente se conecta remotamente a un servidor Git. A segunda versión do protocolo destaca por ofrecer a capacidade de filtrar ramas e etiquetas no lado do servidor, devolvendo unha lista acurtada de ligazóns ao cliente. Anteriormente, calquera comando de extracción enviaba sempre ao cliente a lista completa de referencias en todo o repositorio, mesmo cando o cliente só estaba actualizando unha rama ou comprobando que a súa copia do repositorio estaba actualizada. Outra novidade notable é a posibilidade de engadir novas capacidades ao protocolo a medida que novas funcionalidades están dispoñibles no conxunto de ferramentas. O código do cliente segue sendo compatible co protocolo antigo e pode seguir funcionando tanto con servidores novos como antigos, volvendo automaticamente á primeira versión se o servidor non admite a segunda.
  • A opción "-show-scope" engadiuse ao comando "git config", o que facilita a identificación do lugar onde se definen determinadas opcións. Git permítelle definir a configuración en diferentes lugares: no repositorio (.git/info/config), no directorio de usuarios (~/.gitconfig), no ficheiro de configuración de todo o sistema (/etc/gitconfig) e a través do comando opcións de liña e variables de ambiente. Ao executar "git config" é bastante difícil entender onde se define exactamente a configuración desexada. Para solucionar este problema, estaba dispoñible a opción "--show-origin", pero só mostra a ruta do ficheiro no que se define a configuración, o que é útil se queres editar o ficheiro, pero non axuda se cómpre cambiar o valor a través de "git config" usando as opcións "--system", "--global" ou "-local". A nova opción "--show-scope" mostra o contexto da definición da variable e pódese usar xunto con -show-origin:

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

    $ git config --show-scope --get-regexp 'diff.*'
    global diff.statgraphwidth 35
    dif local. chaira movida

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

  • Na configuración de encadernación credenciais Permítese o uso de máscaras nos URL. Calquera configuración e credenciais HTTP en Git pódense configurar tanto para todas as conexións (http.extraHeader, credential.helper) como para as conexións baseadas en URL (credential.https://example.com.helper, credential.https: //example. com.axudante). Ata agora, os comodíns como *.example.com só se permitían para a configuración HTTP, pero non eran compatibles coa vinculación de credenciais. En Git 2.26, estas diferenzas elimínanse e, por exemplo, para vincular un nome de usuario a todos os subdominios agora podes especificar:

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

    nome de usuario = ttaylorr

  • A expansión do soporte experimental para a clonación parcial (clons parciais) continúa, o que lle permite transferir só parte dos datos e traballar cunha copia incompleta do repositorio. A nova versión engade un novo comando "git sparse-checkout add", que lle permite engadir directorios individuais para aplicar a operación "checkout" só a parte da árbore de traballo, en lugar de listar todos eses directorios á vez mediante o comando "git". sparse-checkout set" (pode engadir un por un directorio, sen volver especificar toda a lista cada vez).
    Por exemplo, para clonar un repositorio git/git sen cometer blobs, limitando o checkout só ao directorio raíz da copia de traballo e marcando por separado checkout para os directorios "t" e "Documentation", podes especificar:

    $ git clone --filter=blob:none --sparse [protexido por correo electrónico]:git/git.git

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

    $ git sparse-checkout engadir t
    ....
    $ git sparse-checkout engadir documentación
    ....
    $ git lista de compra dispersa
    documentación
    t

  • Mellorouse significativamente o rendemento do comando "git grep", usado para buscar tanto os contidos actuais do repositorio como as revisións históricas. Para acelerar a busca, era posible escanear o contido da árbore de traballo usando varios fíos ("git grep -threads"), pero a busca nas revisións históricas era dun só fío. Agora eliminouse esta limitación implementando a capacidade de paralelizar as operacións de lectura desde o almacenamento de obxectos. De forma predeterminada, o número de fíos defínese igual ao número de núcleos de CPU, o que na maioría dos casos agora non require configurar de forma explícita a opción "-threads".
  • Engadido soporte para o autocompletado de entrada de subcomandos, camiños, ligazóns e outros argumentos do comando "git worktree", que che permite traballar con varias copias de traballo do repositorio.
  • Engadido soporte para cores brillantes que teñen secuencias de escape ANSI. Por exemplo, na configuración das cores destacadas “git config –color” ou “git diff –color-moved” pode especificar “%C(brightblue)” mediante a opción “--format” para o azul brillante.
  • Engadida unha nova versión do script fsmonitor-vixiante, proporcionando integración co mecanismo Facebook Watchman para acelerar o seguimento dos cambios de ficheiros e a aparición de novos ficheiros. Despois de actualizar é necesario git заменить gancho no repositorio.
  • Engadíronse optimizacións para acelerar os clons parciais ao usar mapas de bits
    (maquinaria de mapa de bits) para evitar unha busca completa de todos os obxectos ao filtrar a saída. Agora realízase a comprobación de blobs (—filter=blob:none e —filter=blob:limit=n) durante a clonación parcial
    significativamente máis rápido. GitHub anunciou parches con estas optimizacións e soporte experimental para a clonación parcial.

  • O comando "git rebase" moveuse a un backend diferente, usando o mecanismo predeterminado "merge" (usado anteriormente para "rebase -i") en lugar de "parche+aplicar". Os backends difiren nalgúns pequenos aspectos, por exemplo, despois de continuar unha operación despois de resolver un conflito (git rebase --continue), o novo backend ofrece editar a mensaxe de confirmación, mentres que o antigo simplemente utilizaba a antiga mensaxe. Para volver ao comportamento antigo, pode usar a opción "--apply" ou establecer a variable de configuración "rebase.backend" en "aplicar".
  • Un exemplo de manejador para os parámetros de autenticación especificados a través de .netrc reduciuse a un formulario axeitado para o seu uso.
  • Engadiuse a configuración gpg.minTrustLevel para establecer o nivel de confianza mínimo para varios elementos que realizan a verificación da sinatura dixital.
  • Engadiuse a opción "--pathspec-from-file" a "git rm" e "git stash".
  • A mellora dos conxuntos de probas continuou en preparación para a transición ao algoritmo de hash SHA-2 en lugar de SHA-1.

Fonte: opennet.ru

Engadir un comentario