2014-03-24 31 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,則大小不受限制。