2012-04-02 22 views
5

Trong một trong các dự án git của tôi, tôi có một tệp zip bao gồm một tập hợp các thư viện java. Tệp zip là 4.5MB và chứa 11 tệp. Chỉ có một trong các thư viện chứa được thay đổi thường xuyên, một trong những thư viện mà tôi đang làm việc (theo thứ tự là 50KB). Các thư viện khác là tĩnh.Git có xử lý thông minh một kho lưu trữ zip trong đó chỉ có một trong các tệp thay đổi thường xuyên không?

Sẽ rất tuyệt nếu git chỉ thay đổi một chút thông minh trong tệp zip và không thay thế toàn bộ tệp zip bằng mọi cam kết. Khác, kho git của tôi sẽ phát triển rất nhanh.

Khi tôi đã cập nhật thư viện và đã tạo lại tệp zip và cam kết + đẩy các thay đổi, tôi nhận thấy git viết đối tượng theo thứ tự < 100KB tới máy chủ, như "Viết đối tượng: 100% (58/58), 77,64 KiB, xong rồi. ". Vì vậy, nó trông giống như git thông minh chỉ gửi một phần thay đổi của zip, và không phải là toàn bộ tập tin zip 4,5MB một lần nữa và một lần nữa.

Thực sự là trường hợp git xử lý thông minh các tệp zip?

Trả lời

5

Git biết cách xử lý các tệp khác nhau trong tệp nhị phân, vì vậy nếu một vài tệp đã thay đổi trong zip, tệp sẽ không lưu toàn bộ tệp ở mỗi lần commit. Một lưu ý phụ, tôi sẽ không khuyên bạn nên lưu trữ zip trong kho của bạn, vì nó có thể là một tạo tác (tức là kết quả biên dịch) của mã của bạn, trừ khi nó là một kho lưu trữ chỉ các tạo phẩm của bạn.

+0

Điều đó có ý nghĩa, điều đó thật tuyệt. Bạn đúng về lưu trữ các tệp nhị phân trong kho lưu trữ nguồn. Tuy nhiên tôi muốn cung cấp một nhị phân dễ dàng tải về mà luôn được cập nhật (thay vì phải cập nhật và tải lên các tệp nhị phân bằng tay). –

+0

Sau đó cung cấp cho một cơ hội để git móc và kịch bản :) – CharlesB

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