gpt4 book ai didi

git - 尝试使用 nodejs 运行 git shortlog 时,Exec 不返回任何内容

转载 作者:搜寻专家 更新时间:2023-10-31 23:28:26 24 4
gpt4 key购买 nike

我试图通过这种方式在带有 nodejs 的存储库上获取 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);
});

最佳答案

git shortlog 认为它必须从 stdin 读取一些东西,因此无限期等待。尝试这个:

exec('git shortlog < /dev/tty', { cwd : "/tmp/" + folder }, function(err, stdout, stderr) {
console.log(arguments);
});

关于git - 尝试使用 nodejs 运行 git shortlog 时,Exec 不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15564185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com