2014-03-24 28 views
6

我正在向仓库推送大约200 MB的代码。这需要很多时间。无论如何,我们可以显示进度条,这样我可以知道有多少代码被推入回购?如何知道git推送完成的百分比?

+0

为什么downvote? –

+3

推200mb也可能表明你正在使用Git的东西,你不应该.. – Daenyth

+1

你是什么意思的“代码约200 MB”?你有一个200 MB的文件吗?或者,您所提交的所有更改的总和是否等于200 MB? – 2014-03-25 03:24:50

回答

6

这不是一个进度栏,但是git push已经从终端运行时默认报告进度。从official Linux kernel git documentation for git push

--progress 

进展状态报告了默认标准错误流,当它被连接到末端,除非指定-q。即使标准错误流未定向到终端,此标志也会强制进度状态。

您试图一次推送200 MB的事实表明,您可能正在使用git进行次优化。

4

git push --progress会更精确,使用Git 2.10(Q3 2016)

commit e376f17从杰夫·金(peff)

index-pack命令有两个进度条:

  • 之一“接收对象”,和
  • 一个用于“解决三角洲”。

你既没有得到默认值,也没有得到“-v”。

但是对于推送接收包,我们只希望“resolving deltas”阶段,而不是receiving objects”进展。
有两个原因:

  • 一个很简单,现有的客户已经打印在同一时间“写入对象”的进展。
    可以说从远端“接收”更有用,因为它告诉你在那里实际得到了什么,而不是可能卡在客户端和服务器之间某处的缓冲区中。但是这需要一个协议扩展来告诉客户不要打印他们的进度。可能的,但 复杂的小收益。

  • 第二个原因更重要。
    在像git-over-ssh这样的全双工连接中,我们可以打印进度,而 这个包被传入,它会立即到达客户端。
    但是对于像git-over-http这样的半双工连接,在收到完整请求之前我们不应该说任何话。
    我们写的任何东西都会被Web服务器卡在缓冲区中。更糟的是,如果缓冲区填满,我们可能会陷入僵局。

因此,我们最好的办法是避免写任何东西,直到我们收到全包这不是一个小 固定大小。


更新2016年9月:Git的2.10是存在的,你可以看到在GitHub的博客文章 “Git 2.10 has been released” 这个进度表的例子:

https://cloud.githubusercontent.com/assets/3477155/18064845/34bb6956-6dff-11e6-8e3e-8a92c0bddaef.gif


更新Git 2.11(2016年第4季度)

现在,传入的“git push”通过在接收端 末端设置新的配置变量,现在可以拒绝太多的字节 。

请参阅commit c08db5a,commit 411481b(2016年8月24日)作者:Jeff King (peff)
参见commit 5ad2186(2016年8月24日)作者:Christian Couder (chriscool)
(在commit da3b6f0Junio C Hamano -- gitster --合并,2016年9月9日)

接收包:允许指定一个最大输入大小

接收包馈送其输入到任何一个索引包或解压对象,它将愉快地接受发送者愿意提供的尽可能多的字节。
让我们允许一个任意的截断点,我们将停止写字节到磁盘。

git config doc现在包括:

receive.maxInputSize 

如果输入包流的大小比该限制较大的,然后与git - 接收包将错误输出,而不是接受的包文件。
如果未设置或设置为0,则大小不受限制。