2010-08-10 6 views
5

¿Existe una forma estándar de enumerar todas las confirmaciones hechas por otros (es decir, no por mí mismo) en un repositorio de git?Lista de confirmaciones hechas por otros (es decir, no yo)?

Intenté git log --not --author=username, pero parece que --not solo se aplica a las revisiones. La página de manual para git log no parece ofrecer una forma de invertir predicados como --author.

(utilizo git-svn en el trabajo, y quiero una manera de ver lo que mis colegas han cambiado desde la última vez que corrí git svn rebase, o más en general en los últimos X días. Generalmente sé lo que he cambiado, sólo quiero ver qué archivos han sido tocados por otros/leen sus mensajes de registro/quizá interesante revisar los parches/etc)

Editar:alcance refinado, en realidad estoy más interesado en "recientemente" que "desde el pasado git svn rebase".

+0

Parece que debe poder evitar esta búsqueda de autor. No uso git-svn, pero 'git svn rebase' está documentado como ir a buscar y luego rebasar, así que seguramente actualiza las referencias en' refs/remotes/git-svn'. ¿No puedes hacer algo como 'git log master @ {1} .. git-svn'? – Cascabel

+0

Puedo ver fácilmente mis parches "sin apurar" con 'git log git-svn..', y viceversa, pero lo que realmente quiero es poder ver los cambios realizados" recientemente "por otros, por ejemplo, los últimos 3 días. La búsqueda del autor parece ser la única, ya que los objetos/blobs de commit y demás son reescritos por 'git svn rebase', como dices. – RobM

+0

Entonces, de nuevo, ¿qué pasa con 'git log git-svn' o' git log master @ {1} .. git-svn'? ¿No debería la historia parecerse a '-o-o-o (git-svn) -o-o-o (master)'? – Cascabel

Respuesta

5

Esto no es una solución real, pero por lo que vale, usted podría evitar algo usando el hecho de que --author usa una coincidencia de expresiones regulares. Si su nombre fuera, digamos, Jefromi:

git log --author='^[^J]\|J[^e]\|Je[^f]' # and so on 

es bastante malo, pero podría ser lo suficientemente bueno para sus propósitos. (Y es más corto si nadie más nombre empieza con las mismas letras que la suya.)

En cuanto a recientemente, además de la utilización de saltos para concretar su alcance (start..end, ^stop1 ^stop2 branch, etc.), sólo puede utilizar la opción --since=<date>.

+0

¡No es una mala idea! ¿Sabes qué sabor de la expresión regular 'git log' usa? – RobM

+0

@RobM: Git trata la expresión regular básicamente como grep: con todos los comandos que la usan, es la expresión regular básica por defecto, luego están '-i' (caso de ignorar),' -E' (expresión regular extendida) y '-F '(cadenas fijas) opciones. – Cascabel

2
git log --perl-regexp --author='^(?!RobM)' 

Explicación: anclar la expresión regular al principio de la cadena con ^; luego use look-ahead (?!whatever) para prohibir que su nombre aparezca después de esa posición. De esta forma, incluso puede excluir confirmaciones de varios autores:

git log --perl-regexp --author='^(?!jack|jill)' 
Cuestiones relacionadas