Git克隆没有显示进度

时间:2019-06-13 20:34:04

标签: windows git cmd progress

我正在尝试获取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

编辑:

我正在使用git clone和以下代码从NodeJS调用child_process

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

1 个答案:

答案 0 :(得分:2)

克隆进度将输出到stderr。即使stderr不是tty设备,--progress标志也会强制它发生(例如C library isatty() function返回false / 0)。

不幸的是,--progress中的git clone是通过调用其他Git程序来工作的,它未能将--progress标志传递给那些程序。这些程序分别进行自己的isatty()测试,该测试表明重定向的stderr不是tty,因此那些程序不会显示任何进度消息。

修复此问题需要修复潜在的Git错误。如果您选择这样做,则解决方法是将git clone连接到满足isatty测试的对象:在Linux和类似系统上的伪tty。 (我不知道Windows上的窍门是什么。)