我正在尝试使用nodejs获取git仓库的git shortlog
结果:
var exec = require('child_process').exec;
exec("cd /tmp/"+folder +" && git shortlog", {maxBuffer: 500*1024}, function(error, stdout, stderror){
console.log(arguments);
});
我的回调函数从未被调用,程序似乎一直在处理某些东西。当我在提示符中启动此命令时,我会得到结果。尝试将结果重定向到文件会创建一个空文件:
"cd /tmp/"+folder +" && git shortlog > stats.txt"
但是如果我使用git log
,我就可以得到结果。
你知道为什么我的回调函数永远不会被git shortlog
调用吗?
编辑: 我使用spawn得到了相同的结果:
exec("cd /tmp/"+folder, function(err){
if(err){
throw err;
}
var shortlog = spawn('git', ['shortlog']);
shortlog.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
shortlog.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
shortlog.on('close', function (code) {
console.log('child process exited with code ' + code);
});
});
编辑2: process.chdir() 不会改变任何东西:
process.chdir('/tmp/'+folder);
var shortlog = spawn('git', ['shortlog']);
shortlog.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});