28

执行时是否可以获得进度条git clone?我想知道,因为我目前正在做一个 git clone 到目前为止已经花费了几分钟,并且很想知道它是否会很快完成。

4

5 回答 5

21

并不真地。有不同的阶段git clone

  1. 发现需要发送的对象(“计数对象:nnn”)
  2. 压缩并发送这些对象
  3. 索引收到的包
  4. 检查收到的文件

阶段 1 涉及从每个分支头遍历提交图,查找所有提交和相关对象:由于事先不知道有多少提交,因此无法衡量其进度。可悲的是,这通常是克隆操作占用大量时间的地方。

第 2 阶段确实有一个进度计数器,尽管它计算的是对象而不是数量(因此它的速率会有所不同,特别是如果 repo 有大块)

第 3 阶段和第 4 阶段有进度计数器,尽管它们通常比前两个阶段快得多。

于 2011-01-09T15:41:54.010 回答
16

你可以做:

   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
于 2014-05-07T19:11:10.483 回答
11

我目前正在做一个 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()现在知道如何做一个真正的进度表,我们可以放弃我们的假的并使用那个来代替。

正如ks1322评论中指出的那样

--progressgit clone从终端运行时默认启用。无需为终端显式编写它。

于 2016-08-05T07:21:51.857 回答
2

你可能想看看文件夹

$project/.git/objects/pack

克隆时,应该有一个以tmp_pack_. 它包含当前正在下载的 git 包。

有了这些信息,您可能能够目视持续时间。

于 2014-05-06T17:53:12.193 回答
0

怎么样git clone --progress

于 2014-09-24T10:16:17.720 回答