Versión de control de fonte de Git 2.35

Despois de dous meses de desenvolvemento, lanzouse o sistema de control de fontes distribuído Git 2.35. 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íu 494 cambios, elaborados coa participación de 93 desenvolvedores, dos cales 35 participaron no desenvolvemento por primeira vez. Principais novidades:

  • Ampliáronse as posibilidades de usar claves SSH para asinar dixitalmente obxectos Git. Para limitar o período de validez de varias claves, engadiuse soporte ás directivas OpenSSH "válido-antes" e "válido-despois", co que pode garantir un correcto funcionamento das sinaturas despois de que un dos desenvolvedores xire a chave. Antes disto, houbo un problema coa separación das sinaturas pola chave antiga e a nova: se eliminas a chave antiga, será imposible verificar as sinaturas feitas con ela e, se a deixas, seguirá sendo posible crear novas sinaturas coa chave antiga, que xa foi substituída por outra chave. Usando valid-before e valid-after pode separar o ámbito das claves segundo o momento en que se creou a sinatura.
  • Na configuración merge.conflictStyle, que permite seleccionar o modo para mostrar información sobre conflitos durante unha fusión, apareceu soporte para o modo "zdiff3", que move todas as liñas estándar especificadas ao comezo ou ao final do conflito fóra do conflito. área, que permite unha presentación máis compacta da información.
  • Engadiuse o modo "--staged" ao comando "git stash", que che permite ocultar só os cambios engadidos ao índice, por exemplo nunha situación na que necesitas pospoñer temporalmente algúns dos cambios complexos para poder realizar primeiro engade o que xa está listo e trata o resto despois dun tempo. O modo é semellante ao comando "git commit", escribindo só os cambios colocados no índice, pero en lugar de crear un novo commit en "git stash —staged", o resultado gárdase na área temporal de stash. Unha vez que sexan necesarios os cambios, pódense reverter co comando "git stash pop".
  • Engadiuse un novo especificador de formato ao comando "git log", "-format=%(describe)", que lle permite combinar a saída de "git log" coa saída do comando "git describe". Os parámetros para "git describe" especifícanse directamente dentro do especificador ("-format=%(describe:match= ,excluír= )")), na que tamén pode incluír etiquetas acurtadas ("—format=%(describe:tags= )") e configure o número de caracteres hexadecimais para identificar obxectos ("—format=%(describe:abbrev= )")). Por exemplo, para enumerar os últimos 8 commits cuxas etiquetas non teñen unha etiqueta candidata á versión e especificando identificadores de 8 caracteres, pode usar o comando: $ git log -8 —format='%(describe:exclude=*-rc *,abbrev=13 )' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2edb95c94 v056-2.34.1-g642f56f95 v8-7-g2.34.1edb203c9 2980902-gb2.34.1bd 640bbc3f41 v212-2.34.1-gffb639f36d v65715-4132- gdfXNUMXcXNUMXadebXNUMX vXNUMX-XNUMX-gXNUMXbXNUMXaXNUMX
  • A configuración user.signingKey agora admite novos tipos de chaves que non se limitan ao tipo "ssh-" e especifican a ruta completa do ficheiro á chave. Os tipos alternativos especifícanse mediante o prefixo "key::", por exemplo "key::ecdsa-sha2-nistp256" para as claves ECDSA.
  • Aumentouse notablemente a velocidade de xerar unha lista de cambios no modo "—histograma", así como ao usar a opción "—color-moved-ws", que controla o resaltado de espazos nunha diferenza de cor.
  • O comando "git jump", usado para proporcionar a Vim información sobre o salto exacto á posición desexada nun ficheiro ao analizar conflitos de fusión, ver diferenzas ou realizar unha operación de busca, ofrece a posibilidade de reducir os conflitos de fusión cubertos. Por exemplo, para limitar as operacións só ao directorio "foo", pode especificar "git jump merge - foo" e excluír do procesamento o directorio "Documentation" - "git jump merge - ':^Documentation'"
  • Traballouse para estandarizar o uso do tipo "size_t" en lugar de "unsigned long" para os valores que representan o tamaño dos obxectos, o que permitiu usar filtros "limpar" e "smudge" con ficheiros de máis de 4 GB. en todas as plataformas, incluídas as plataformas co modelo de datos LLP64 , o tipo "unsigned long" no que está limitado a 4 bytes.
  • A opción "-empty=(stop|drop|keep)" engadiuse ao comando "git am", que lle permite seleccionar o comportamento das mensaxes baleiras que non conteñan parches ao analizar os parches da caixa de correo. O valor "stop" finalizará toda a operación de parcheo, "drop" saltará un parche baleiro e "keep" creará un commit baleiro.
  • Engadido soporte para índices parciais (índice escaso) aos comandos "git reset", "git diff", "git blame", "git fetch", "git pull" e "git ls-files" para mellorar o rendemento e aforrar espazo en repositorios , nos que se realizan operacións de clonación parcial (sparse-checkout).
  • O comando "git sparse-checkout init" quedou en desuso e debería substituírse por "git sparse-checkout set".
  • Engadida a implementación inicial dun novo backend "reftable" para almacenar referencias como ramas e etiquetas no repositorio. O novo backend usa o almacenamento en bloque usado polo proxecto JGit e está optimizado para almacenar un gran número de referencias. O backend aínda non está integrado co sistema de referencias e non está preparado para o seu uso práctico.
  • A paleta de cores do comando "git grep" axustouse para que coincida coa utilidade grep de GNU.

Fonte: opennet.ru

Engadir un comentario