私はgit shortlog
この方法でnodejsを使用してリポジトリで結果を取得しようとしています:
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);
});