Get Git log in JSON format ```shell git log --pretty=format:'{%n "commit": "%H",%n "abbreviated_commit": "%h",%n "tree": "%T",%n "abbreviated_tree": "%t",%n "parent": "%P",%n "abbreviated_parent": "%p",%n "refs": "%D",%n "encoding": "%e",%n "subject": "%s",%n "sanitized_subject_line": "%f",%n "body": "%b",%n "commit_notes": "%N",%n "verification_flag": "%G?",%n "signer": "%GS",%n "signer_key": "%GK",%n "author": {%n "name": "%aN",%n "email": "%aE",%n "date": "%aD"%n },%n "commiter": {%n "name": "%cN",%n "email": "%cE",%n "date": "%cD"%n }%n},' ``` The only information that aren't fetched are: * %B: raw body (unwrapped subject and body) * %GG: raw verification message from GPG for a signed commit The format is applied to each line, so once you get all the lines, you need to remove the trailing `,` and wrap them around an Array. For example in Javascript: ```js var format = '{%n "commit": "%H",%n "abbreviated_commit": "%h",%n "tree": "%T",%n "abbreviated_tree": "%t",%n "parent": "%P",%n "abbreviated_parent": "%p",%n "refs": "%D",%n "encoding": "%e",%n "subject": "%s",%n "sanitized_subject_line": "%f",%n "body": "%b",%n "commit_notes": "%N",%n "verification_flag": "%G?",%n "signer": "%GS",%n "signer_key": "%GK",%n "author": {%n "name": "%aN",%n "email": "%aE",%n "date": "%aD"%n },%n "commiter": {%n "name": "%cN",%n "email": "%cE",%n "date": "%cD"%n }%n},'; var commits = []; new BufferedProcess({ command: 'git', args: [ 'log', '--pretty=format:' + format ], stdout: function (output) { commits += output; }, exit: function (code) { if (code === 0) { var result = JSON.parse('[' + commits.slice(0, -1) + ']'); console.log(result); // valid JSON array } } }); ``` git log pretty format source: http://git-scm.com/docs/pretty-formats