Git клон не показывает прогресс - PullRequest
0 голосов
/ 13 июня 2019

Я безуспешно пытаюсь добиться прогресса в git clone.

Я пытался с git clone --progress <path> 2>stderr.txt, но он возвращает только:

Cloning into 'project-name'...
done.

Вывод, который мне нужен, будет выглядеть примерно так:

Progress: 1/100
Progress: 2/100
Progress: 3/100

Моя версия git 2.21.0.windows.1

Edit:

Я звоню git clone из NodeJS, используя child_process со следующим кодом:

let cloneSpawn = spawn("git", ["clone", "--progress", path], {shell: true});
cloneSpawn.stderr.on("data", d => {
  console.log(d.toString());
});

1 Ответ

2 голосов
/ 13 июня 2019

Прогресс клонирования выводится в stderr.Флаг --progress заставляет это произойти, даже если stderr не является устройством tty (как, например, библиотека C isatty(), функция возвращает false / 0).

К сожалению, --progress inside git clone работает, вызывая другие программы Git, и не может передать флаг --progress этим программам.Эти программы выполняют свой отдельный isatty() тест, который говорит, что ваш перенаправленный stderr не является tty, поэтому эти программы не выводят никаких сообщений о прогрессе.

Для исправления этого необходимо исправитьБазовая ошибка Git.Обходной путь, если вы решите это сделать, - это подключить ваш git clone к чему-то, что удовлетворяет тесту isatty: псевдотетти, в Linux и подобных системах.(Я не знаю, что делает трюк в Windows.)

...