Questa è una domanda piuttosto semplice: come un newbie Git mi chiedevo se c'era un modo per far uscire il mio log git su un file, preferibilmente in un qualche tipo di formato serializzato come XML, JSON o YAML. Eventuali suggerimenti?Uscita log Git in XML, JSON o YAML?
risposta
per output in un file:
git log > filename.log
Per specificare un formato, come si vuole tutto su una linea di
git log --pretty=oneline >filename.log
o se si vuole un formato saranno inviati tramite un programma come sendmail
git log --pretty=email |email-sending-script.sh
per generare JSON, YAML o XML sembra che avete bisogno di fare qualcosa di simile:
git log --pretty=format:"%h%x09%an%x09%ad%x09%s"
Questa sostanza (non mia) Formati perfettamente uscita in JSON: https://gist.github.com/1306223
Vedi anche:
Ho fatto qualcosa del genere per creare un widget minimo di web api/javascript che mostrasse gli ultimi 5 commit in qualsiasi repository.
Se si sta facendo questo da qualsiasi tipo di linguaggio di scripting, si davvero desidera generare il JSON con qualcosa di diverso per il tuo personaggio "
preventivo, in modo che si può sfuggire citazioni reali messaggi di commit. (È volontà li hanno, prima o poi, e non è bello per quello di rompere le cose.)
Così ho finito con il terribile ma improbabile delimitatore ^@^
e questo da riga di comando.
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^@^},\'';
Poi (in node.js) il mio corpo risposta HTTP è costruito da stdout
della chiamata alla git log
così:
var out = ("" + stdout).replace(/"/gm, '\\"').replace(/\^@\^/gm, '"');
if (out[out.length - 1] == ',') {
out = out.substring (0, out.length - 1);
}
e il risultato è bello JSON che non si rompe con citazioni.
Una soluzione rapida per l'escape di caratteri speciali nei messaggi di commit sarebbe utilizzare '% f' invece di'% s' nella stringa di formato: '% f: riga oggetto igienizzata, adatta per un nome file' –
FWIW, un progetto che utilizza questo approccio [è qui] (https: // github.com/timboudreau/gittattle) –
Vale la pena menzionare che ora è possibile farlo utilizzando le stringhe del modello ES6, annullando la necessità di utilizzare il delimitatore^@^e la sostituzione della stringa del nodo. – Gary
Questo script avvolge git log e produce un output JSON: https://github.com/paulrademacher/gitjson
Ecco https://github.com/dreamyguy/gitlogg, l'ultimo git-log => JSON
parser avrete mai bisogno!
Alcune delle caratteristiche Gitlogg s' sono:
- analizzare i
git log
di più repository in un unico file diJSON
. - Introdotto
repository
chiave/valore. - Introdotto
files changed
,insertions
edeletions
chiavi/valori. - Introdotto
impact
chiave/valore, che rappresenta le modifiche cumulative per il commit (insertions
-deletions
). - Sanitizza le virgolette
"
convertendole in virgolette singole'
su tutti i valori che consentono o vengono creati dall'input dell'utente, ad esempiosubject
. - Quasi tutti i segnaposto
pretty=format:
sono disponibili. - Inserire/escludere facilmente quali chiavi/valori verranno analizzati in
JSON
commentando/rimuovendo quelli disponibili. - Codice di facile lettura che è stato completamente commentato.
- Feedback esecuzione esecuzione script su console.
- Gestione degli errori (poiché il percorso per i repository deve essere impostato correttamente).
Successo, il JSON è stato analizzato e salvato.
- 1. File registro uscita log Git
- 2. Serializzare un oggetto su JSON, XML, YAML?
- 3. discarica JSON in yaml
- 4. Come convertire [] byte XML in uscita JSON in Golang
- 5. Come si inserisce HTML o XML in un YAML?
- 6. YAML rispetto a XML
- 7. AngularJS log JSON
- 8. Uscita JSON in Postgresql
- 9. Posso eseguire il escape dei caratteri nell'output di git log?
- 10. Perché git log non è impostato su git log --follow?
- 11. Converti Swagger JSON in RAML/YAML
- 12. IntelliJ 14.1 registrazione uscita in xml
- 13. Ordinamento uscita JSON in Python
- 14. uscita Coloring JSON in python
- 15. PHP JSON o Array su XML
- 16. Rebases log Git
- 17. core animation xml o json framework
- 18. Uscita xml Log4net
- 19. YAML come caratteri superset e TAB JSON
- 20. Come funziona 'git log --graph' o 'hg graphlog'?
- 21. Modifica JSON fluentd uscita
- 22. Reading uscita git diff
- 23. Differenza tra git-log e git-whatchanged?
- 24. Uscita JSON di una vista in Grails
- 25. Garantire il caricamento sicuro di JSON, XML e YAML nel progetto Django
- 26. Utilizzando percorso caratteri jolly git log
- 27. Come posso convertire YAML in XML in Perl?
- 28. Test unità Uscita json in Zend Framework
- 29. Come visualizzare Git Log in Emacs?
- 30. Cosa significa O (log (log (n)))) - competitivo?
Questo ha funzionato come un fascino, grazie! Per i futuri lettori, ecco un link agli shortcode utilizzati da "format": http://www.kernel.org/pub/software/scm/git/docs/git-log.html – Andrew
@andrew aww ... link broke ... – Marty
Hmm. Bene, tutti i riferimenti che posso trovare puntano a quella stessa pagina spezzata, quindi vergogna per chiunque abbia buttato giù la documentazione git senza un reindirizzamento. Boo. – Andrew