我正在尝试获取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());
});
答案 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上的窍门是什么。)