2011-08-18 29 views
30

Tôi có một kho lưu trữ đầy đủ các tệp zip, việc nén lại các tệp này sẽ là một sự lãng phí thời gian.git pull mà không cần đối tượng nén từ xa

Tôi đã cố gắng để thiết lập core.compression = 0 trên điều khiển từ xa và bản sao cục bộ nhưng không thành công

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

git pull vẫn làm

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

Bạn đã đo sự khác biệt về hiệu suất chưa? Tôi sẽ không lo lắng về thời gian dành cho nén dữ liệu đã nén; mạng có khả năng chậm hơn nhiều so với CPU của bạn. –

Trả lời

43

Vấn đề về thời gian mà tôi gặp phải là do nén đồng bằng.

Các giải pháp đối với tôi là

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

Tôi sẽ trích dẫn câu trả lời tuyệt vời này từ http://lists-archives.org/git/719515-serious-performance-issues-with-images-audio-files-and-other-non-code-data.html

Git không dành một chút thời gian hợp lý trong zlib đối với một số khối lượng công việc, nhưng nó không nên tạo ra các vấn đề theo thứ tự phút.

Đối đẩy và kéo, có lẽ bạn đang nhìn thấy nén đồng bằng, mà có thể được làm chậm cho các tập tin lớn

core.compression 0 # đã dường như không làm việc.

Điều đó sẽ tắt nén zlib các đối tượng và vật thể lỏng lẻo trong các gói packfiles. Nó có thể tiết kiệm một chút thời gian cho các đối tượng mà sẽ không nén, nhưng bạn sẽ mất các lợi ích kích thước cho bất kỳ tệp văn bản nào.

Nhưng nó sẽ không tắt nén đồng bằng, đó là những gì giai đoạn "nén ..." trong khi đẩy và kéo đang làm. Và đó là nhiều khả năng nguyên nhân của sự chậm chạp.

pack.window 0

Nó đặt số lượng các đối tượng khác git sẽ xem xét khi thực hiện đồng bằng nén. Đặt nó thấp nên cải thiện thời gian đẩy/kéo của bạn. Nhưng bạn sẽ mất đi lợi ích đáng kể khi nén đồng bộ các tệp không phải hình ảnh của bạn (và các đối tượng meta của git) . Vì vậy, tùy chọn "-delta" ở trên cho các tệp cụ thể là một giải pháp tốt hơn nhiều.

echo '* .jpg -delta'> .gitattributes

Ngoài ra, hãy xem xét việc đóng gói lại kho lưu trữ của bạn, mà sẽ tạo ra một packfile đó sẽ được tái sử dụng trong push và pull.

Lưu ý rằng các cài đặt phải được thực hiện trên repo bạn đang tìm nạp/kéo từ, không phải là cài đặt bạn đang tìm nạp/kéo đến.

+7

đề xuất sử dụng ">>" vì điều này sẽ ghi đè bất kỳ thứ gì khác mà bạn có thể có trong tệp '.gitattributes' của bạn:' echo '* .zip -delta' >> .gitattributes' – scottgwald

7

Các compressing object phương tiện đường nó là công việc ing pack. Điều đó bao gồm việc phân biệt các cây và các thứ. Nó không phải là "nén" theo nghĩa là core.compression.

+1

ok, vậy làm cách nào để ngăn chặn git pull thực hiện công việc đóng gói? – hdorio

+4

@Doud Bạn không biết. Git gói mọi thứ. Đây là hành vi tốt và mong muốn. – meagar

+0

@Doud làm cách nào để di chuyển ngôi nhà của tôi mà không đóng gói? –

Các vấn đề liên quan