Herramienta para identificar posibles revisores para un cambio propuesto

8

¿Existe una herramienta que tome como entrada un parche propuesto y un repositorio git e identifique que los desarrolladores son los mejores candidatos para revisar el parche? Usaría el historial de git para identificar a los autores que tienen más experiencia con los archivos / secciones de código que se están cambiando.

Editar: El caso de uso es un gran proyecto de código abierto ( OpenStack Compute ), donde entran propuestas de fusión, y veo una propuesta de fusión en un fragmento de código con el que no estoy familiarizado, y quiero agregar el nombre de otra persona al lista de revisores sugeridos para que esa persona reciba una notificación para ver la propuesta de fusión.

Lorin Hochstein
fuente
Es una mala idea (totalmente errónea) sugerir código-código ordinario como revisor de código basado en el historial de archivos
Lazy Badger
1
@Lazy: ¿Por qué? ¿Qué tiene de malo lo que está buscando el OP y por qué es "Está mal (totalmente mal) ..."? Veo que esa herramienta es muy útil en mi lugar de trabajo.
mattnz 01 de
44
Lo sentimos, diferencia en las ideas de propósito de revisión de código: no empleamos "código monos". En mi lugar de trabajo todos somos iguales (algunos pueden ser más iguales que otros), la revisión del código se usa con el propósito de enseñar y la calidad del código, por lo que se espera que todos sean revisores, y se espera que todos sean revisados.
mattnz 01 de
1
¿Cómo quieres cuantificar "la mayoría de la experiencia"? ¿La mayoría de las líneas de código? ¿Ediciones más recientes? Si escribí un archivo / módulo completo hace un año y no he tenido sentido, y alguien más hizo algunos cambios menores la semana pasada, ¿quién es el adecuado? No estoy seguro de cómo puede determinar automáticamente los mejores candidatos con una cantidad razonable de certeza ...
Thomas Owens
1
@ThomasOwens Agregué más detalles a la pregunta.
Lorin Hochstein

Respuestas:

6

No conozco ninguna herramienta de este tipo, pero una línea de base es bastante fácil de escribir:

(for file in $files_touched_by_patch; do
    git blame -p "$file"
done) \
  | grep '^author ' | sed 's/^author *//' \
  | sort | uniq -c | sort -nrk 1

enumerará a las personas que tocaron por última vez $files_touched_by_patch, ordenadas por cuántas de sus líneas de código sobreviven en la versión actual.

Fred Foo
fuente