Потоковый вывод на стандартный вывод после порождения `git clone`

1

Я просто пытаюсь запустить git clone из узла и передавать вывод в stdout так же, как запускать из оболочки, как обычно, но после использования child_process.spawn я не могу получить вывод в pipe в stdout. В настоящее время я использую:

child = spawn('git', ['clone', url]);
child.stdout.pipe(process.stdout);
child.stderr.pipe(process.stderr);

Но я вижу только сообщение "Клонирование в" каталог ", а не удаленные сообщения и" Получение объектов... ".

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

Теги:

1 ответ

1
Лучший ответ

По умолчанию git clone показывает только прогресс, когда он работает в терминале. Если он не работает в ходе работы терминала, его можно включить с --progress аргумента --progress:

Статус выполнения сообщается в стандартном потоке ошибок по умолчанию, когда он подключен к терминалу, если не указан -q. Этот флаг передает статус прогресса, даже если стандартный поток ошибок не направлен на терминал.

Однако я не уверен, что это будет делать именно то, что вы ожидаете. Выход прогресса - это не простой вывод; значения изменяются на месте. Я не совсем уверен, насколько приятно играть с child_process.spawn().

Также обратите внимание, что вывод - это STDERR, а не STDOUT.

  • 1
    Клонирование и выборка также не передают аргумент --progress в git receive-pack поэтому в общем случае все работает не так. Лекарство заключается в выделении псевдо-tty, но оно редко стоит всей работы.
  • 0
    Спасибо! попробовал и работает отлично. я не уверен, как работает переменная вещь вывода, хотя

Ещё вопросы

Сообщество Overcoder
Наверх
Меню