El formatting de logging git imprime dates vacías

Tengo un repository de git en el que todas las confirmaciones se realizan en un cronogtwig utilizando un script de Python y la biblioteca de dulwich .

Estoy tratando de imprimir la list de confirmaciones con sus dates de confirmación, utilizando el git log con un formatting personalizado, pero no puedo encontrar una cadena de formatting que funcione.

Esto es lo que obtengo para una única confirmación cuando ejecuto git log --format=raw :

 commit d955a72160fdacfc7c22eccdccaf8b343c882ebb tree d6b8baffb86d16b90552250da7bfe39828d16982 parent 03bccd572a8ed7e04c96bf27a010d7ef39165e1c author auto.py 1381493109 +0000 committer auto.py 1381493109 +0000 commit message 

Compare eso con un repository donde todos los commits han sido creados por la herramienta git real, también con --format=raw :

 commit 72dbd4358c8685cfd604b4146c7728c82999a97e tree cfc5254c5f96b50ec6b5abf1b573e97989a52b19 parent 2f2a87f7f1e87afe1b93d659e4cd435532352ada author me <me@example.com> 1381503599 -0300 committer me <me@example.com> 1381503599 -0300 commit message 

Usando la documentation de git log --format , construí una cadena de formatting que debería mostrar las dates de autor y de confirmación en cada formatting, rodeada en ambos lados por el hash de confirmación. Luego lo ejecuté en el repository administrado por dulwich:

 $ git log --format="format:%h %an %ad %aD %ar %at %ai %cn %cd %cD %ar %at %ai %h" d955a72 d955a72 

Y para el repository administrado por git:

 $ git log --format="format:%h %an %ad %aD %ar %at %ai %cn %cd %cD %ar %at %ai %h" 72dbd43 me Fri Oct 11 11:59:59 2013 -0300 Fri, 11 Oct 2013 11:59:59 -0300 5 days ago 1381503599 2013-10-11 11:59:59 -0300 mRB0 Fri Oct 11 11:59:59 2013 -0300 Fri, 11 Oct 2013 11:59:59 -0300 5 days ago 1381503599 2013-10-11 11:59:59 -0300 72dbd43 

Cada date es una cadena vacía. Supongo que dulwich almacenó las dates de confirmación de forma diferente, pero no puedo encontrar ninguna forma de acceder a ellas en la cadena de formatting.

¿Hay algún formatting personalizado que pueda usar con git log para acceder a las marcas de time en los commits de dulwich?

Estoy usando la versión de Git 1.8.3.4 (Apple Git-47).

Creo que la confirmación creada por dulwich no es válida, ya que la dirección de correo electrónico del autor y del autor es siempre obligatoria en Git (el analizador busca el encerramiento <> ). El error al analizar los identificadores autor / committer resulta en no analizar la timestamp.

La respuesta de Antoine Pelisse es correcta: mis confirmaciones no tienen una dirección de correo electrónico en sus loggings de autor / comstackdor, por lo que no son válidas y git no puede analizarlas para formatearlas.

Pude reparar mis repositorys ejecutando el siguiente filter en el directory de trabajo. Tenga en count que esto actualizará TODOS los autores de los compromisos de forma incondicional:

 git filter-branch --env-filter " GIT_AUTHOR_EMAIL='foo@bar.com' GIT_COMMITTER_EMAIL='foo@bar.com' GIT_AUTHOR_NAME='auto.py' GIT_COMMITTER_NAME='auto.py' " 

Afortunadamente, git mantiene el autor y dates de compromiso durante el filter anterior. (Verificado en la versión 1.7.2.5 de git y la versión 1.8.3.4 de git (Apple Git-47))

Para evitar el problema en futuros commits, realicé el siguiente cambio al comprometerme a través de dulwich:

 # old: do not use # repo.do_commit("message", committer="auto.py") # fixed repo.do_commit("message", committer="auto.py <foo@bar.com>") 

Después de lo anterior, mis cadenas de formatting de git log funcionan correctamente.