Я просто пытаюсь запустить git clone
из узла и передавать вывод в stdout так же, как запускать из оболочки, как обычно, но после использования child_process.spawn
я не могу получить вывод в pipe в stdout. В настоящее время я использую:
child = spawn('git', ['clone', url]);
child.stdout.pipe(process.stdout);
child.stderr.pipe(process.stderr);
Но я вижу только сообщение "Клонирование в" каталог ", а не удаленные сообщения и" Получение объектов... ".
Что я делаю неправильно?
По умолчанию git clone
показывает только прогресс, когда он работает в терминале. Если он не работает в ходе работы терминала, его можно включить с --progress
аргумента --progress
:
Статус выполнения сообщается в стандартном потоке ошибок по умолчанию, когда он подключен к терминалу, если не указан -q. Этот флаг передает статус прогресса, даже если стандартный поток ошибок не направлен на терминал.
Однако я не уверен, что это будет делать именно то, что вы ожидаете. Выход прогресса - это не простой вывод; значения изменяются на месте. Я не совсем уверен, насколько приятно играть с child_process.spawn()
.
Также обратите внимание, что вывод - это STDERR
, а не STDOUT
.
--progress
вgit receive-pack
поэтому в общем случае все работает не так. Лекарство заключается в выделении псевдо-tty, но оно редко стоит всей работы.