2013-10-29 53 views
1

執行git fetch時,如何知道將從遠程傳輸到本地的對象/變化的確切大小?如何在執行'git fetch'時找到diff對象的大小?

+0

我認爲沒有人教過git來做到這一點。爲什麼在意?要麼你需要歷史,要麼你不需要。 – jthill

+0

@jthill我正在開發非技術人員的更新腳本,他們有網絡問題......如果更改的大小太大(100Mb +),他們幾乎不可能直接更新。所以我需要添加一些代理開關,如果變化的大小太大,就會打開代理開關。 – ChandlerQ

回答

0

不是100%肯定,如果這是正確的,有可能是這樣做的更好的方法,但你可以嘗試:

git fetch --dry-run 

這應該表現出什麼樣的獲取,而無需實際與走在前面會做它。如果您有適用的遠程變化,這種信息應該呈現給大家,例如:

(SHA1)..(SHA2) master -> origin/master 

然後你可以使用cat-file與大小標記檢查提交,我相信應該代表你想輸入的變化:

git cat-file -s (SHA2) 

返回的數量以字節爲單位。我希望這可以幫助你。

1

實際的網絡流量大小取決於你在本地擁有什麼,遠程將給你什麼,以及你用來傳輸數據的協議。

有關詳細信息,請參閱Pro Git book,但短期的版本是,如果你使用了「智能」協議(git://...ssh://...)獲取,你可以得到一個「瘦包」包含代表資源庫對象增量壓縮數據您目前缺少,但是壓縮了您擁有的物品,您在fetch中要求的物品。如果使用「啞」協議,則無法獲得該協議,並且會得到鬆散的對象(bzip2壓縮)或「厚」包。

只看對象本身的(未壓縮)大小可能不會告訴你很多。