Y no ha pasado medio año: se ha lanzado el sistema de control de versiones Git 2.29



Hola,% username%, hoy, una gran noticia: en el dominio público apareció la versión 2.29.0 del sistema de control distribuido de Git . Probablemente, en Habré no vale la pena decir qué es, porque Git sigue siendo uno de los mejores sistemas.



La nueva versión contiene 627 cambios a la vez, que fueron realizados por 89 desarrolladores. Le informaremos sobre los principales cambios y mejoras bajo el corte.



  • SHA-256 SHA-1 . Git . . , SHA-1 , Git . SHA3-256, SHA2-256, SHA2 Git . , , . , , - — .


  • Ahora Git ha agregado la capacidad de incluir un nuevo formato de objeto al crear un repositorio:


$ git init --object-format=sha256 repo
   Initialized empty Git repository in /home/ttaylorr/repo/.git/
 
   $ cd repo
   $ echo 'Hello, SHA-256!' >README.md
   $ git add README.md
   $ git commit -m "README.md: initial commit"
   [master (root-commit) 6e92961] README.md: initial commit
    1 file changed, 1 insertion(+)
    create mode 100644 README.md
 
   $ git rev-parse HEAD
   6e929619da9d82c78dd854dfe237c61cbad9e95148c1849b1f96ada5ee800810


Solo puede elegir entre SHA-1 y SHA-256, no hay posibilidad de combinar diferentes hashes en un repositorio.



  • Los comandos git fetch y git push ahora admiten especificaciones de enlaces exclusivos que amplían las reglas para hacer coincidir enlaces entre ramas en repositorios locales y externos. Esta función será útil en situaciones en las que sea necesario no solo seleccionar, sino también excluir algunas ramas del mapeo. Entonces, cuando necesite verificar todas las ramas "refs / heads / *", excepto una "refs / heads / ref-to-exclude", antes de tener que especificar la lista completa usando este script:


   $ git ls-remote origin 'refs/heads/*' |
     grep -v ref-to-exclude |
     awk '{ print $2:$2 }' |
     xargs git fetch origin


  • Ahora hay un operador de excepción "^". Las expresiones con este operador aceptan plantillas, pero no pueden hacer referencia a identificadores de objeto. Un comando que usa el operador nuevo podría verse así:


   $ git fetch origin 'refs/heads/*:refs/heads/*' ^refs/heads/ref-to-exclude


Además, puede utilizar exclusiones en la configuración:



   $ git config --add remote.origin.fetch ^refs/heads/foo


  • El "git shortlog" ahora tiene la capacidad de agrupar confirmaciones por el contenido de campos adicionales, "Revisado por:" y "Coautoría por:", y no solo por autor o confirmador. Entonces, si necesita mostrar una lista de los desarrolladores que revisan más activamente, entonces necesita un comando:


 $ git shortlog -ns --group=trailer:reviewed-by v2.28.0.. | head -n5
    40  Eric Sunshine
    10  Taylor Blau
     4  brian m. carlson
     2  Elijah Newren
     1  Jeff King


  • Se pueden especificar varias declaraciones --group al inicio y usar la opción --format. Por lo tanto, para realizar un seguimiento de los coautores o colaboradores, ahora debe especificar lo siguiente:


   $ git shortlog -ns --group=author --group=trailer:co-authored-by
   $ git shortlog --format="...helped %an on %as" --group=trailer:helped-by v2.28.0..v2.29.0


  • Si ocurre un conflicto durante una operación de fusión de git, el encabezado del mensaje de confirmación ahora está entre corchetes para separar explícitamente los datos de la confirmación de los mensajes de diagnóstico de Git.
  • Los desarrolladores recuperaron la segunda versión del protocolo de comunicación Git, que se deshabilitó en la versión 2.27. Por lo tanto, se ha solucionado un error que provocaba problemas de estabilidad.
  • La opción "--first-parent" se ha agregado al comando git bisect, que se usa para detectar una revisión, para cambiar la selección de confirmaciones entre la revisión de trabajo conocida y la revisión en la que ocurrió el problema.


Puedes ver todas las innovaciones aquí .






All Articles