2011-08-18 90 views
30

我有一個存儲庫全是zip文件,重新壓縮這些文件將是浪費時間。git pull沒有遠程壓縮對象

我試圖設置core.compression = 0對遠程和本地副本沒有成功

git config core.compression 0 
git config core.loosecompression 0 

混帳拉還是做

remote: Counting objects: 23, done. 
remote: Compressing objects: ... 
+1

您是否測量過性能差異?我不會擔心壓縮已壓縮數據的時間;網絡可能比你的CPU慢得多。 –

回答

43

我遇到的時間問題是由增量壓縮造成的。

對我來說,解決辦法是

echo '*.zip -delta' > .gitattributes 
git gc 

我將舉這個極好的響應 http://lists-archives.org/git/719515-serious-performance-issues-with-images-audio-files-and-other-non-code-data.html

混帳不花費大量的時間公平位在zlib的一些工作量,但它 不應該按分鐘順序創建問題。

對於推動和拉動,你可能會看到增量壓縮, 可以對大文件

core.compression 0#似乎並沒有工作很慢。

這應該禁用zlib壓縮鬆散對象和對象 內的包文件。它可以節省一些時間,以便不會壓縮 的對象,但是您將失去任何文本文件的大小優勢。

但它不會關閉增量壓縮,這是在推拉過程中「壓縮...」階段正在執行的操作。而哪一個更可能是緩慢的原因。

pack.window 0

它設置其他物體做增量 壓縮時,git會考慮數量。將它設置得較低應該會提高推/拉時間。但是 你將失去​​你的 非圖像文件(和git的元對象)的增量壓縮的實質性好處。所以特定文件的 以上的「-delta」選項是一個更好的解決方案。

回聲「* .JPG -Delta」> .gitattributes

另外,還要考慮重新包裝你的資料庫,這將產生一個 打包文件的推期間將重新使用並拔出。

請注意,設置必須在您從中取回/拉出的回購庫中進行,而不是您正在取/拉的回購。

+7

建議使用「>>」,因爲這會覆蓋你可能已經在'.gitattributes'文件中有的東西:'echo'* .zip -delta'>> .gitattributes' – scottgwald

7

compressing object線的裝置這是做pack工作。這包括區分樹木和東西。在core.compression的意義上它不是「壓縮」。

+1

好的,那麼我該如何防止git pull做包裝工作? – hdorio

+4

@Doud你不知道。 Git包裝的東西。這是好的和理想的行爲。 – meagar

+0

@Doud我如何在沒有包裝的情況下搬家? –