2015-11-06 7 views
0

Я имею эту команду я использую, чтобы получить содержимое внутри хранилища мерзавца:Node.js эквивалент Баш труба стандартного вывод перенаправления

git archive --remote=ssh://[email protected]/repository.git HEAD filename.txt | tar xvOf - 

Первая часть команды возвращает содержимое filename.txt внутри хранилища в стандартный выход. Вторая часть есть, чтобы удалить pax_global_header, что git автоматически добавляет содержимое.

Я хочу осуществить эту команду как породившей child_process на node.jsv0.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

Что я делаю неправильно?

ответ

0

я понял, ответ через 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); 
     } 
    }); 
.... 
Смежные вопросы