git clone的进度指示器

时间:2011-01-09 15:36:48

标签: git progress git-clone

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

5 个答案:

答案 0 :(得分:16)

不是真的。 git clone有各种各样的阶段:

  1. 发现需要发送的对象(“Counting objects:nnn”)
  2. 压缩并发送这些对象
  3. 索引收到的包
  4. 查看收到的文件
  5. 第1阶段涉及从每个分支头部遍历提交图,查找所有提交和关联对象:由于事先不知道有多少提交,因此无法对其进度进行测量。遗憾的是,这通常是克隆操作中很多时候被占用的地方。

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

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

答案 1 :(得分:14)

你可以这样做:

   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

答案 2 :(得分:6)

  

我目前正在做一个git克隆,到目前为止已经花了几分钟,并且很想知道它是否即将完成。

使用Git 2.10(2016年第3季度),git clone --progress将更加详细。

请参阅杰夫金的commit 38e590epeff
(Junio C Hamano于2016年8月4日commit a58a8e3合并)

  

clone:使用真实的进度表进行连接检查

     

因为克隆的初始连接检查   存储库可能很慢,0781aa4 (clone: let the user know when check_everything_connected is run, 2013-05-03)添加了一个   “假”进度表;我们只是说“Checking connectivity”   当它开始时,最后是“done”,之间没有任何内容。

     

因为check_connected()现在知道如何取得真正的进步   米,我们可以放弃我们假的那个而不是那个。

答案 3 :(得分:2)

您可能需要查看文件夹

$project/.git/objects/pack

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

通过这些信息,您可以了解持续时间。

答案 4 :(得分:-1)

git clone --progress怎么样?