Esta es una pregunta bastante simple: como novato de Git, me preguntaba si hay una forma de que produzca mi log de git en un archivo, preferiblemente en algún tipo de formato serializado como XML, JSON o YAML. ¿Alguna sugerencia?¿Salió la salida de registro a XML, JSON o YAML?
Respuesta
de salida a un archivo:
git log > filename.log
Para especificar un formato, al igual que lo quieren todo en una sola línea
git log --pretty=oneline >filename.log
o si desea que un formato para ser enviado por correo electrónico a través de un programa como Sendmail
git log --pretty=email |email-sending-script.sh
para generar JSON, YAML o XML que parece que hay que hacer algo como:
git log --pretty=format:"%h%x09%an%x09%ad%x09%s"
Esta GIST (no la mía) Formatos de salida perfectamente en JSON: https://gist.github.com/1306223
Ver también:
Hice algo como esto para crear un widget web api/javascript mínimo que muestre los últimos 5 commits en cualquier repositorio.
Si usted está haciendo esto de cualquier tipo de lenguaje de script, que realmente desea generar JSON con algo más que "
para su carácter de comillas, para que pueda escapar cotizaciones reales en los mensajes de confirmación. (Se hará los tiene, tarde o temprano, y no es agradable para que para romper cosas.)
Así que terminó con la aterradora pero poco probable delimitador ^@^
y esto de línea de comandos.
var cmd = 'git log -n5 --branches=* --pretty=format:\'{%n^@^hash^@^:^@^%h^@^,%n^@^author^@^:^@^%an^@^,%n^@^date^@^:^@^%ad^@^,%n^@^email^@^:^@^%aE^@^,%n^@^message^@^:^@^%s^@^,%n^@^commitDate^@^:^@^%ai^@^,%n^@^age^@^:^@^%cr^@^},\'';
Entonces (en Node.js) mi cuerpo de la respuesta HTTP se construye a partir stdout
de la llamada a git log
así:
var out = ("" + stdout).replace(/"/gm, '\\"').replace(/\^@\^/gm, '"');
if (out[out.length - 1] == ',') {
out = out.substring (0, out.length - 1);
}
y el resultado es agradable JSON que no se rompe con citas.
Una solución rápida para escapar caracteres especiales en los mensajes de cometer sería el uso de '% F' en lugar de' s'% en la cadena de formato: '% f: desinfectado línea de asunto, propicio al Fwiw filename' –
, un proyecto que utiliza este enfoque [está aquí] (https: // github.com/timboudreau/gittattle) –
Vale la pena mencionar que ahora puede hacer esto usando cadenas de plantillas de ES6, anulando la necesidad de utilizar el^^^delimitador y la cadena de nodos de reemplazo. – Gary
Este script envuelve git log y produce una salida JSON: https://github.com/paulrademacher/gitjson
He aquí https://github.com/dreamyguy/gitlogg, el último git-log => JSON
analizador que usted necesitará siempre!
Algunos de características Gitlogg 's son:
- analizar el
git log
de múltiples repositorios en un solo archivoJSON
. - Introducido clave
repository
/valor. - Introducido
files changed
,insertions
ydeletions
llaves/valores. - Introducido
impact
clave/valor, que representa los cambios acumulativos para la confirmación (insertions
-deletions
). - Sanitice las comillas dobles
"
convirtiéndolas a comillas simples'
en todos los valores que permiten o que se crean a través de la entrada del usuario, comosubject
. - Casi todos los
pretty=format:
marcadores de posición están disponibles. - fácilmente incluir/excluir qué claves/valores serán analizados a
JSON
comentando/descomentando los que están disponibles. - Código fácil de leer que está completamente comentado.
- Comentarios sobre la ejecución de scripts en la consola.
- Manejo de errores (ya que la ruta a los repositorios debe establecerse correctamente).
éxito, el JSON se ha analizado y se guarda.
Error 001: la ruta a los repositorios no existe.
Error 002: existe una ruta a los repositorios, pero está vacía.
- 1. ¿Serializar un objeto a JSON, XML, YAML?
- 2. XML vs YAML frente a JSON para un RPG 2D
- 3. PHP JSON o Matriz a XML
- 4. analizando la salida de registro de git, preferiblemente como xml
- 5. YAML comparado con XML
- 6. ¿Cómo convierto YAML a XML en Perl?
- 7. ¿Cómo pones HTML o XML en un YAML?
- 8. ¿Puedo escapar de los caracteres en la salida de registro de git?
- 9. Python YAML: formato de salida de control
- 10. python2.7: configuración de registro con yaml
- 11. Análisis YAML - ¿Lex o laminado a mano?
- 12. Crear un modelo de YAML/JSON sobre la marcha
- 13. Configuración de programa editable humana JSON o similar a YAML en Java
- 14. Cómo convertir archivos de configuración symfony yaml a formato xml
- 15. Salida XMLWriter a archivo XML
- 16. XML a JSON con Scala
- 17. Incrustar datos JSON en el archivo YAML
- 18. Convertir XML a formato JSON
- 19. ¿Visualizar la jerarquía JSON/YAML como un árbol en HTML?
- 20. Conversión dinámica de XML a JSON
- 21. Serialise a YAML usando XStream en Java
- 22. cómo formatear la salida Json?
- 23. Salida XML de MySQL
- 24. Agregar atributo virtual a la salida de json
- 25. Salida JSON en Postgresql
- 26. Salida de registro de multiprocesamiento.Proceso
- 27. Registro de Java: ¿cómo redirigir la salida a un archivo de registro personalizado para un registrador?
- 28. XML library similar a simplejson/json? - Python
- 29. Convierta un shapefile (.shp) a xml/json
- 30. cómo convertir XML a JSON usando jQuery
Esto funcionó como un amuleto, ¡gracias! Para futuros lectores, aquí hay un enlace a los códigos abreviados utilizados por "formato": http://www.kernel.org/pub/software/scm/git/docs/git-log.html – Andrew
@andrew aww ... enlace roto ... – Marty
Hmm. Bueno, todas las referencias que puedo encontrar apuntan a la misma página rota, así que lástima de quien haya eliminado la documentación de git sin una redirección. Abucheo. – Andrew