.git-blame-ignore-revs es una característica de Git introducida en la versión 2.23 que le permite ignorar confirmaciones específicas en los resultados de git listening. Esto es particularmente útil para confirmaciones masivas que cambian una gran cantidad de líneas sin alterar la funcionalidad real del código, como cambios de formato, cambios de nombre o aplicación de estándares de codificación en una base de código. Al ignorar estos cambios no funcionales, git listening puede centrarse en ediciones significativas que expliquen el contexto y el razonamiento detrás del código.
Cuando usas git listening en un archivo, te muestra qué confirmación cambió por última vez cada línea del archivo, junto con el autor y la marca de tiempo. Esto es útil para rastrear por qué se cambió una línea en particular. Sin embargo, si una gran confirmación que realiza cambios puramente de formato, como aplicar una versión más bonita, es parte del historial, git listening puede señalar esa confirmación en muchas líneas. Esto dificulta encontrar el historial de cambios funcionales real.
Por ejemplo, si su equipo utiliza una herramienta como Prettier o ESLint para reformatear todo el código base, la confirmación resultante podría abarcar miles de líneas de código. Sin .git-blame-ignore-revs, git Blame mostraría que este compromiso es responsable de cada línea afectada, lo que podría oscurecer la historia más significativa detrás de cada línea.
Al usar .git-blame-ignore-revs, puedes decirle a git seek que omita estas confirmaciones y se concentre en los cambios que importan.
Para comprender cómo utilizar esta función, veamos un ejemplo del repositorio de React.
El código fuente de React incluye confirmaciones masivas donde se ejecutaron herramientas como Prettier en todo el proyecto. Aquí hay dos de esas confirmaciones:
2. Confirmar: fd2b3e1
Mensaje: Compilador: configuración más bonita de Unfork
Esta confirmación contiene más actualizaciones de la configuración de Prettier, que afectan a todos los archivos .ts y .tsx en el repositorio.
Estas confirmaciones solo se ocupan del formato y no brindan un contexto significativo al investigar por qué una línea de código se escribió de la forma en que estaba.
Para hacer que git Blame ignore estas confirmaciones de formato masivo, podemos crear un archivo .git-blame-ignore-revs en la raíz del repositorio.
touch .git-blame-ignore-revs
2. Agregue los hashes de confirmación relevantes al archivo, explicando por qué se ignora cada confirmación. En este caso, agregaremos las dos confirmaciones que identificamos anteriormente:
# Prettier formatting changes c998bb1ed4b3285398c9c7797135d3f060243c6a fd2b3e13d330a4559f5aa21462e1cb2cbbcf144b
3. Guarde el archivo .git-blame-ignore-revs en el repositorio. Este archivo se puede versionar junto con su código, lo que permite que todo el equipo use la misma lista de confirmaciones ignoradas.
Para evitar escribir la opción --ignore-revs-file cada vez que usas git listening, puedes configurar Git para que use automáticamente el archivo .git-blame-ignore-revs.
git config blame.ignoreRevsFile .git-blame-ignore-revs
Esto garantiza que cada vez que alguien ejecute git-culp en este repositorio, Git ignorará automáticamente las confirmaciones enumeradas en .git-blame-ignore-revs.
Veamos cómo funciona esto en la práctica. Sin ignorar las confirmaciones de formato masivo, la culpa de git podría mostrar:
$ git blame src/someFile.tsx c998bb1e (Joe Bloggs 2023-03-15 10:00:00 0200 1) import React from 'react'; fd2b3e13 (Alan 2023-04-01 14:15:30 0200 2) function App() { c998bb1e (Joe Bloggs 2023-03-15 10:00:00 0200 3) returnHello, world!; fd2b3e13 (Ben 2023-04-01 14:15:30 0200 4) }
Este resultado indica que el último cambio en las líneas 1 y 3 se debió a la confirmación de formato Prettier (c998bb1e), y las líneas 2 y 4 se modificaron en otra confirmación masiva (fd2b3e13). Dado que se trata de cambios de formato, esto no ayuda a comprender quién introdujo la lógica real detrás de estas líneas.
Después de configurar .git-blame-ignore-revs, ejecutar git listening omitirá las confirmaciones masivas y mostrará el historial real:
$ git blame src/someFile.tsx a23d9b34 (May 2022-12-01 09:30:00 0200 1) import React from 'react'; b12e45a6 (JJ 2022-12-05 11:45:15 0200 2) function App() { a23d9b34 (Joe 2022-12-01 09:30:00 0200 3) returnHello, world!; b12e45a6 (Ram 2022-12-05 11:45:15 0200 4) }
Ahora, git listening atribuye las líneas a las confirmaciones correctas, ignorando los cambios de formato sin importancia. Esto nos brinda información útil y muestra quién realizó los cambios funcionales reales.
La función .git-blame-ignore-revs en Git 2.23 cambia las reglas del juego para proyectos con formato masivo o cambios de estilo. Al configurar un archivo .git-blame-ignore-revs y configurar su repositorio, puede aplicar estándares de codificación, ejecutar herramientas como Prettier o refactorizar código sin preocuparse por contaminar el historial de culpas.
Con este enfoque, su equipo puede mejorar con confianza la calidad y el formato del código sin sacrificar la capacidad de realizar un seguimiento de cambios significativos, lo que garantiza que git listening siga siendo una herramienta valiosa para comprender la historia y el razonamiento detrás de cada línea de código.
En Think Throo, tenemos la misión de enseñar los conceptos arquitectónicos avanzados de base de código utilizados en proyectos de código abierto.
10 veces tus habilidades de codificación practicando conceptos arquitectónicos avanzados en Next.js/React, aprende las mejores prácticas y crea proyectos de nivel de producción.
Somos de código abierto: https://github.com/thinkthroo/thinkthroo (¡Danos una estrella!)
Mejora las habilidades de tu equipo con nuestros cursos avanzados basados en arquitectura de base de código. Comuníquese con nosotros en [email protected] para obtener más información.
https://github.com/facebook/react/blob/main/.git-blame-ignore-revs
https://gist.github.com/kateinoigakukun/b0bc920e587851bfffa98b9e279175f2
https://github.com/facebook/react/commit/c998bb1ed4b3285398c9c7797135d3f060243c6a
https://moxio.com/blog/ignoring-bulk-change-commits-with-git-blame/
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3