【问题标题】:Node.js equivalent of bash pipe stdout redirectionNode.js 等效于 bash 管道标准输出重定向
【发布时间】:2015-11-06 15:28:02
【问题描述】:

我正在使用这个命令来获取 git 存储库中的内容:

git archive --remote=ssh://git@git/repository.git HEAD filename.txt | tar xvOf -

命令的第一部分将存储库中filename.txt 的内容返回到标准输出。 第二部分是为了删除 git 自动添加到内容中的pax_global_header

我想将此命令实现为node.js v0.10.36 上的衍生子进程

这是我尝试过的:

var git = spawn("git",  ["archive","--remote=" + repositoryUrl,"HEAD",filename]);
var tar = spawn("tar", ["xvOf", "-"]);
var out = [];
tar.stdout.pipe(git.stdout).on('data', function(data){
        var string = data.toString();
        if(string) {
            out.push(string);
        }
    });

但是当我运行它时,我在数据处理程序中得到的字符串就像git 输出永远不会通过tar 进程进行管道传输

我做错了什么?

【问题讨论】:

    标签: node.js git bash child-process


    【解决方案1】:

    我在发帖 10 秒后就找到了答案……

    我应该做的是将git 的输出通过管道传输到tar 的输入,并使用tar 输出的流

    所以我的代码看起来有点像这样:

        var git = spawn("git",  ["archive","--remote=" + repositoryUrl,"HEAD",filename]);
        var tar = spawn("tar", ["xvOf", "-"]);
    
        var out = [];
        git.stdout.pipe(tar.stdin);
    
        tar.stdout.on('data', function(data){
            var string = data.toString();
            if(string) {
                out.push(string);
            }
        });
    ....
    

    【讨论】:

      猜你喜欢
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 2013-02-10
      • 2013-07-16
      相关资源
      最近更新 更多