我正在尝试通过创建一个新的 yeoman 生成器来为新项目设置一个样板,我需要做的一件事是将一个大型 Git 存储库设置为子模块,然后在某个标签处 checkout 。我一切正常,但我想提供一些有关 checkout 的进度反馈。
当您手动运行submodule add
时,您会得到如下更新:
Receiving objects: 14% (22925/163744), 5.41 MiB | 1.30 MiB/s
我希望在添加 Node 脚本子模块期间显示该输出,但我似乎无法让它显示任何内容。这是我所拥有的:
MyGenerator.prototype.addSubmodule = function() {
var done = this.async();
console.log('Initializing submodule. This may take a minute.');
var git = spawn('git', ['submodule', 'add', 'git://github.com/PathTo/Submodule.git', 'submodule']);$
git.stdout.on('data', function(data){
console.log(data);
});
git.stderr.on('data', function(data){
console.log(data);
});
git.on('close', function(){$
process.chdir('submodule');$
console.log('Checking out %s branch of Submodule', this.submoduleVersion);
var checkout = spawn('git', ['checkout', this.submoduleVersion]);
checkout.stdout.on('data', function(data) {
console.log(data);
});
checkout.on('close', function() {
process.chdir('../');
done();
});
});
提前致谢。
最佳答案
这与 Running shell script in rails only outputs the 1 line 相关,但似乎 git submodule
不支持其中描述的 --progress
选项。您应该能够通过让 Git 进程从当前进程继承 stderr 文件描述符(也可以同时抛出 stdout)来获得所需的进度输出,根据 child_process documentation可以这样做:
var git = spawn(
'git',
['submodule', 'add', 'git://github.com/PathTo/Submodule.git', 'submodule'],
{ stdio: ['pipe', process.stdout, process.stderr] );
关于node.js - 作为生成 Node 进程启动时显示来自 GIt 的反馈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21505548/