执行时是否可以获得进度条git clone
?我想知道,因为我目前正在做一个 git clone 到目前为止已经花费了几分钟,并且很想知道它是否会很快完成。
5 回答
并不真地。有不同的阶段git clone
:
- 发现需要发送的对象(“计数对象:nnn”)
- 压缩并发送这些对象
- 索引收到的包
- 检查收到的文件
阶段 1 涉及从每个分支头遍历提交图,查找所有提交和相关对象:由于事先不知道有多少提交,因此无法衡量其进度。可悲的是,这通常是克隆操作占用大量时间的地方。
第 2 阶段确实有一个进度计数器,尽管它计算的是对象而不是数量(因此它的速率会有所不同,特别是如果 repo 有大块)
第 3 阶段和第 4 阶段有进度计数器,尽管它们通常比前两个阶段快得多。
你可以做:
du -s .git
监视临时内容大小的变化以获得一个想法。
watch du -s .git
使您无需重新键入命令即可进行监视。类似下面的单行代码会定期为您提供每秒 kB 的数据累积速率:
delay=5; prev=`du -sk .git/ | cut -f 1`; sleep $delay; while true; do cur=`du -sk .git/ | cut -f 1`; expr \( $cur - $prev \) / $delay ; prev=$cur; sleep $delay; done
我目前正在做一个 git clone 到目前为止已经花了几分钟,我很想知道它是否会很快完成。
使用 Git 2.10(2016 年第三季度)git clone --progress
将更加冗长。
请参阅Jeff King ( )的提交 38e590e (由 Junio C Hamano 在2016 年 8 月 4 日的提交 a58a8e3中合并)peff
clone
:使用真实的进度表进行连接检查因为克隆存储库的初始连接检查可能很慢,0781aa4(
clone
:让用户知道何时check_everything_connected
运行,2013-05-03)添加了一个“假”进度表;我们只是Checking connectivity
在开始时说“”done
,在结束时说“”,中间没有任何内容。既然
check_connected()
现在知道如何做一个真正的进度表,我们可以放弃我们的假的并使用那个来代替。
--progress
git clone
从终端运行时默认启用。无需为终端显式编写它。
你可能想看看文件夹
$project/.git/objects/pack
克隆时,应该有一个以tmp_pack_
. 它包含当前正在下载的 git 包。
有了这些信息,您可能能够目视持续时间。
怎么样git clone --progress
?