1
0
mirror of https://github.com/danog/gift.git synced 2024-11-30 04:19:37 +01:00

Merge pull request #13 from cubehero/diff_options

add options to git diff
This commit is contained in:
Luke Plaster 2014-03-18 13:45:56 +01:00
commit d6c4acfc01

View File

@ -128,14 +128,32 @@ module.exports = class Repo
# commitA - A Commit or String commit id.
# commitB - A Commit or String commit id.
# paths - A list of String paths to restrict the difference to (optional).
# options - An object of options to pass to git diff (optional)
# callback - A Function which receives `(err, diffs)`.
#
diff: (commitA, commitB, paths, callback) ->
[callback, paths] = [paths, callback] if !callback
paths ?= []
# Possible forms of the method:
#
# diff(commitA, commitB, callback)
# diff(commitA, commitB, paths, callback)
# diff(commitA, commitB, options, callback)
# diff(commitA, commitB, paths, options, callback)
#
diff: (commitA, commitB) ->
[paths, options] = [[], {}]
if arguments.length is 3
callback = arguments[2]
else if arguments.length is 4
callback = arguments[3]
if arguments[2] instanceof Array
paths = arguments[2]
else if arguments[2] instanceof Object
options = arguments[2]
else if arguments.length is 5
[paths, options, callback] = arguments.slice(2)
commitA = commitA.id if _.isObject(commitA)
commitB = commitB.id if _.isObject(commitB)
@git "diff", {}, _.flatten([commitA, commitB, "--", paths])
@git "diff", options, _.flatten([commitA, commitB, "--", paths])
, (err, stdout, stderr) =>
return callback err if err
return callback err, Diff.parse(this, stdout)