Từ kinh nghiệm của riêng tôi, các tuyên bố sau đây đều đúng:
- Git rất hiệu quả trong việc lưu trữ các tệp văn bản và chỉ lưu trữ các tệp này đã được thay đổi. Vì vậy, khi so sánh SVN và Git để so sánh kích thước kho lưu trữ, chúng có thể giống nhau hoặc thậm chí có thể có một lợi thế nhỏ cho Git.
- Điều này là hoàn toàn sai nếu bạn so sánh kích thước của kho lưu trữ trong đó một lượng đáng kể các tệp là các tệp văn phòng (như MS word, excel, powerpoint, ...). Ở đây Git cũng lưu trữ các bản sao hoàn chỉnh, điều đó có nghĩa là 10 thay đổi nhỏ trên ngăn xếp slide powerpoint tạo ra 10 bản sao hoàn chỉnh, trong đó Subversion chỉ lưu trữ một khác biệt nhị phân, có thể là một hệ số nhỏ hơn 100.
Nếu bạn so sánh vị trí thanh toán (bản thân nó là một kho lưu trữ với Git), câu chuyện hoàn toàn khác:
- Subversion lưu trữ cho mỗi tệp một bản sao hoàn chỉnh, vì vậy kích thước của vị trí thanh toán của bạn thường gấp 2 lần kích thước của các tệp.
- Git lưu trữ toàn bộ lịch sử của kho lưu trữ cục bộ, do đó tùy thuộc vào kích thước của lịch sử, số này có thể nhỏ hơn hoặc lớn hơn nhiều so với bản sao kiểm tra Subversion.
Nếu bạn so sánh số lượng byte bạn phải tải xuống hoặc tải lên, thì nó lại khác.
- Subversion thường gửi hoặc nhận ít byte hơn, bởi vì nó chỉ gửi sự khác biệt. Nó phải làm điều đó trên mỗi cam kết và cập nhật.
- Git phải lấy toàn bộ kho lưu trữ (ban đầu), sau đó gửi các tệp hoàn chỉnh (đã nén?) Không khác nhau đối với các tệp văn bản, nhưng có thể khác với các tệp nhị phân. Và vâng, Git chỉ làm điều đó khi bạn đẩy hoặc kéo thứ gì đó vào kho lưu trữ từ xa.
Vì vậy, cuối cùng, bạn so sánh táo với cam và tùy thuộc vào những gì bạn muốn làm với Subversion hoặc Git, kết quả có thể khác nhau.
@jk hỏi về bản sao hoàn chỉnh hoặc khác biệt nhị phân, và tôi không thể trả lời câu hỏi đó. Tôi đã hỏi Matthew McCullough đã tổ chức một hội thảo Git gần đây tại Jax 2012 (mà tôi đã đến thăm). Anh ấy đã dành thời gian (cảm ơn rất nhiều cho anh ấy) để giải thích với một ý chính chi tiết về hoạt động bên trong của Git. Vì vậy, có, có một nén hoạt động ở đó (và tôi cũng sẽ thực hiện một thử nghiệm với tệp văn phòng microsoft và sẽ so sánh với ý chính của mình), nhưng không, việc nén được thực hiện trên toàn bộ tệp. Trích dẫn từ ý chính của mình:
Các đối tượng lỏng lẻo được viết ở dạng nén, nhưng không phải là đồng bằng tại thời điểm của mỗi lần xác nhận.