commit-stream
Turn a git log
into a stream of commit objects
API
commitStream([defaultGithubUser, defaultGithubProject])
Returns an object stream that you can pipe a stream of newlines from the output of git log
to. The output of the stream is a series of objects, each representing a commit from the log.`
Intended to be used on a standard log format (not a simplified one using one of the simplifying --format
options) but it will also process change stats if you git log --stat
.
Typical usage:
var spawn = require('child_process').spawn
, split2 = require('split2')
, listStream = require('list-stream')
spawn('bash', [ '-c', 'git log' ])
.stdout.pipe(split2())
.pipe(commitStream('rvagg', 'commit-stream'))
.pipe(listStream.obj(onCommitList))
function onCommitList (err, list) {
}
Commit object properties:
sha
: the full commit shaauthor
: an object representing the author of the commit
name
: the name of the committeremail
: the email of the committer
authors
: a list of such objects representing the authors of the commit, supporting multiple authors through Co-authored-by:
authorDate
: a string representing the date of the original commit by the author (never change)commitDate
: a string representing the date of the last change of the commitsummary
: the one-line summary of the commitdescription
: the free-form text content of the summary, minus specific metadata linesreviewers
: an array containing objects with name
and email
properties if the commit metadata contains reviewers in a Reviewed-By: Foo Bar <baz@boom>
format.changes
: if --stat
data is included in the git log, an object containing change stats:
files
: the number of files changedinsertions
: the number of new lines inserteddeletions
: the number of old lines removed
prUrl
: a URL pointing to a pull-request where this change was made if the commit metadata contains a PR-URL: https://github.com/user/project/pull/XX
line. Note that whatever proceeds the PR-URL:
string will be collected in this property; one exception being that if a shortened #XX
version is found and you have supplied defaultGitHubUser
and defaultGitHubProject
arguments to the constructor then a full GitHub pull-request will be reconstituted in its place. Also, if a commit message line ends with (#XX)
as is done with green-button merges, this will be used.ghUser
, ghProject,
ghIssue: if a proper GitHub pull request is found for the
prUrlproperty (including shortened
#XX` ones), these properties will be added to point to the original user, project and issue (pull-request) for this change, as extracted from the URL.
License
commit-stream is Copyright (c) 2015 Rod Vagg @rvagg and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details.