On Sat, Apr 8, 2017 at 6:07 PM, Fred .Flintstone <eldmannen@xxxxxxxxx> wrote: > $ git log --format=json > [{ > "commit": "64eabf050e315a4c7a11e0c05ca163be7cf9075e", > "tree": "b1e977800f40bbf6de906b1fe4f2de4b4b14f0fd", > "author": "Tux <tux@xxxxxxxxxxx> 1490981516 +0200", > "committer": "Tux <tux@xxxxxxxxxxx> 1490981516 +0200", > "message": "This is a test commit", > "long_message": "This explains in more details the commit" > }] > > This would make it easy to parse the output. The git-log command isn't plumbing that's meant for machines, but the git-for-each-ref command is what you're most likely looking for. It doesn't have JSON output, but you can make e.g. --format emit something even more easily parsable, e.g. a version of what you have with each field delimited by a custom delimiter, and then split on that. It does have --perl, --tcl etc. options to make it easy to quote the fields, however there's no logic to manage the state machine JSON would need to omit trailing commas, whereas emitting output for languages like Perl where trailing commas don't matter is much easier.