GIT: logging de filter por grupo de autores

Nuestra empresa está dividida en equipos y realizamos revisiones de código antes de enviar nuestro código a los types de control de calidad.

Por lo general, cualquier código que toquemos es revisado por alguien dentro del mismo equipo (A), pero en algunos casos también necesitamos tocar el código de otro equipo (B).

Para esos casos, la revisión del código debe ser doble: una parte revisada por el equipo A, y otra parte revisada por el equipo B.

Nuestro problema es que muchas veces el equipo A no envía el código para ser revisado por el equipo B y esto hace que el equipo B ignore este nuevo código.

Lo que me gustaría hacer es ejecutar periódicamente un script para encontrar commits dentro de ciertas partes del código (generalmente subdirectorys con modules que maneja nuestro equipo) hecho por cualquier persona que no pertenezca a nuestro equipo , pero desafortunadamente el argumento --not en git log no parece funcionar con --author así que no puedo correr felizmente el git log --not --author "John" --author "Paul" --author "Ringo" module/A module/B module/C

Mi requisito se traduce en algo así como " enumerar todas las confirmaciones tocando module / A, module / B o module / C hecho por alguien que no es John, Paul o Ringo "

¿Hay alguna manera de hacer esto usando herramientas "oficiales"? También me interesaría un script de código abierto si esto significa que esto resulta en un juego de una línea o cerca de eso.

EDITAR: Esto debería mostrar confirmaciones con nombres de autores que no contengan "Juan", "Pablo" o "Ringo". Requiere que git se construya con PCRE.

git log --perl-regexp --author='^(?!(.*(John|Paul|Ringo)))'

Dejaré las variantes anteriores a continuación porque todavía pueden ser de alguna utilidad:


Debería poder hacerlo utilizando la aserción negativa de mirar hacia atrás, si su git está comstackdo con soporte PCRE. Algo como esto debería hacer lo que quieras:

git log --perl-regexp --author='(?<!(john|paul|ringo))@'

Tenga en count que la expresión regular en realidad está buscando @ no precedida por john|paul|ringo . Hacer que esto funcione con los nombres será un truco, ya que puede que no haya una forma conveniente de encontrar un "anclaje" que no esté precedido por el nombre que desea excluir.

Puede probar el anclaje al principio de la línea de autor y mostrar solo confirmaciones que no comiencen con John|Paul|Ringo (es decir, se comprometa con John ya que el segundo nombre se mostraría):

git log --perl-regexp --author='^(?!(John|Paul|Ringo))'

    Intereting Posts