Tôi đã chạy một số thử nghiệm với các giá trị khác nhau. Đây là quá lớn để có một bình luận về câu trả lời twalbergs.
Công ty của tôi có một cơ sở mã đã có trong svn, mercurial, và bây giờ git. Đó là 10 tuổi, với 21.000 cam kết.
Trước khi gói là 3,1 GB. Sau khi repack, nó thu nhỏ lại các giá trị sau:
(chạy repack trên một bản sao mới của thư mục 3.1GB mỗi lần).
git repack -a -d --depth=50 --window=10 -f
141.584 MB
git repack -a -d --depth=250 --window=1000 -f
110.484 MB
git repack -a -d --depth=500 --window=1000 -f
110.204 MB
Chúng mất khoảng 5, 15 và 30 phút tương ứng trên mac lõi tứ của tôi.
Cập nhật:
Tôi đã repack thứ hai (250,1000) và reran repack với 500, và 1000 để xem nếu có bất kỳ sự khác biệt giữa một repo 3.1gb tươi và đã repacked 110mb repo.
git repack -a -d --depth=250 --window=1000 -f
110.484 MB
git repack -a -d --depth=500 --window=1000 -f
110.212 MB
Phán quyết: repack 500, 1000 dẫn đến tệp 110,2 MB bất kể tệp đã được đóng gói hay chưa.
Update2:
Tôi đã thêm tò mò nếu chạy một repack với giá trị thấp hơn trên một repo đã repacked sẽ gây ra kích thước tăng lên.
git repack -a -d --depth=500 --window=1000 -f
110.204 MB
git repack -a -d --depth=50 --window=10 -f
142.056 MB
Dự đoán: các repack gây ra kích thước repo để bóng trở lại lên đến ~ 140 MB từ 110 MB
'git gc' nên là đủ và là cách dễ dàng – CharlesB
Để tham khảo, dưới đây là một tóm tắt của chuỗi email từ Linus Torvalds giải thích lý do sử dụng git repack trên git gc http://metalinguist.wordpress.com/2007/12/06/the-woes-of-git-gc-aggressive-and-how-git -deltas-work/ – spuder