fix: use spawn instead of exec for 'git log' to avoid maxBuffer err
This commit is contained in:
parent
d7f5d19073
commit
73138f8a8f
@ -36,6 +36,7 @@
|
|||||||
"coveralls": "^2.11.4",
|
"coveralls": "^2.11.4",
|
||||||
"cz-conventional-changelog": "^1.1.4",
|
"cz-conventional-changelog": "^1.1.4",
|
||||||
"mkdirp": "^0.5.1",
|
"mkdirp": "^0.5.1",
|
||||||
|
"mock-spawn": "^0.2.6",
|
||||||
"nixt": "^0.5.0",
|
"nixt": "^0.5.0",
|
||||||
"nock": "^8.0.0",
|
"nock": "^8.0.0",
|
||||||
"npm-registry-couchapp": "^2.6.11",
|
"npm-registry-couchapp": "^2.6.11",
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
var exec = require('child_process').exec
|
var childProcess = require('child_process')
|
||||||
|
|
||||||
var log = require('npmlog')
|
var log = require('npmlog')
|
||||||
|
|
||||||
@ -13,7 +13,7 @@ module.exports = function (config, cb) {
|
|||||||
|
|
||||||
if (!from) return extract()
|
if (!from) return extract()
|
||||||
|
|
||||||
exec('git branch --no-color --contains ' + from, function (err, stdout) {
|
childProcess.exec('git branch --no-color --contains ' + from, function (err, stdout) {
|
||||||
var inHistory = false
|
var inHistory = false
|
||||||
var branches
|
var branches
|
||||||
|
|
||||||
@ -47,28 +47,33 @@ module.exports = function (config, cb) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
function extract () {
|
function extract () {
|
||||||
exec(
|
var child = childProcess.spawn('git', ['log', '-E', '--format=%H==SPLIT==%B==END==', range])
|
||||||
'git log -E --format=%H==SPLIT==%B==END== ' + range,
|
var stdout = ''
|
||||||
{
|
var err = ''
|
||||||
maxBuffer: 1024 * 1024 // 1MB instead of 220KB (issue #286)
|
|
||||||
},
|
child.stdout.on('data', function (data) {
|
||||||
function (err, stdout) {
|
stdout += data
|
||||||
if (err) return cb(err)
|
})
|
||||||
|
|
||||||
|
child.stderr.on('data', function (data) {
|
||||||
|
err += data
|
||||||
|
})
|
||||||
|
|
||||||
|
child.on('close', function (code) {
|
||||||
|
if (err || code) return cb(err)
|
||||||
|
|
||||||
cb(null, String(stdout).split('==END==\n')
|
cb(null, String(stdout).split('==END==\n')
|
||||||
|
|
||||||
.filter(function (raw) {
|
.filter(function (raw) {
|
||||||
return !!raw.trim()
|
return !!raw.trim()
|
||||||
})
|
})
|
||||||
|
|
||||||
.map(function (raw) {
|
.map(function (raw) {
|
||||||
var data = raw.split('==SPLIT==')
|
var data = raw.split('==SPLIT==')
|
||||||
return {
|
return {
|
||||||
hash: data[0],
|
hash: data[0],
|
||||||
message: data[1]
|
message: data[1]
|
||||||
}
|
}
|
||||||
}))
|
})
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,15 @@
|
|||||||
|
var mockSpawn = require('mock-spawn')()
|
||||||
|
mockSpawn.setStrategy(function (command, args, opts) {
|
||||||
|
return function (cb) {
|
||||||
|
this.stdout.write(
|
||||||
|
/\.\.HEAD/.test(args.join(' '))
|
||||||
|
? rawCommits[0]
|
||||||
|
: rawCommits.join()
|
||||||
|
)
|
||||||
|
cb(0)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
const rawCommits = [
|
const rawCommits = [
|
||||||
'hash-one==SPLIT==commit-one==END==\n',
|
'hash-one==SPLIT==commit-one==END==\n',
|
||||||
'hash-two==SPLIT==commit-two==END==\n'
|
'hash-two==SPLIT==commit-two==END==\n'
|
||||||
@ -12,13 +24,7 @@ module.exports = {
|
|||||||
if (/notinhistory/.test(command)) return cb(new Error())
|
if (/notinhistory/.test(command)) return cb(new Error())
|
||||||
return cb(null, 'whatever\nmaster\n')
|
return cb(null, 'whatever\nmaster\n')
|
||||||
}
|
}
|
||||||
|
|
||||||
cb(
|
|
||||||
null,
|
|
||||||
/\.\.HEAD/.test(command)
|
|
||||||
? rawCommits[0]
|
|
||||||
: rawCommits.join()
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
|
spawn: mockSpawn,
|
||||||
'@noCallThru': true
|
'@noCallThru': true
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user