2016-03-04 24 views
17

Có cách nào tốt nhất cho các loại tệp được lưu trữ trong Git LFS không? Cụ thể cho kích thước tối thiểu?Git LFS xử lý các tệp nhỏ như thế nào?

Ví dụ: tệp nhạc 10MB phù hợp, nhưng khoảng 25kb png thì sao? Có đáng để đưa vào LFS hay tốt hơn là chỉ để cho Git xử lý nó?

Mối quan ngại của tôi là sự xuống cấp hiệu suất khi kiểm tra quá nhiều tệp nhỏ thành một repo LFS. Có bất kỳ dữ liệu nào về cách phần mở rộng LFS đứng lên thành một loạt các tệp nhị phân nhỏ hơn không? Có nên chỉ lưu trữ các tệp trên ngưỡng kích thước nhất định không?

+2

+1 Tôi cũng muốn biết câu trả lời cho điều này, ví dụ UE4 có nhiều tệp uasset nhị phân. Nhiều người nhỏ (10-100KB) và một số lớn (50MB +). Tôi muốn chỉ theo dõi "* .uasset" nếu git-lfs hoạt động tốt. – Chad

Trả lời

10

Tôi không mong đợi giá trị ngưỡng chính xác được đưa ra.

LFS tiết kiệm số lượng dữ liệu cần được trao đổi để đồng bộ hóa với kho lưu trữ từ xa. Tuy nhiên, việc tiết kiệm chỉ áp dụng miễn là bản thân tệp lớn không thay đổi. Trên thực tế cho một tập tin thay đổi, bạn sẽ cần một rountrip thứ hai để xử lý sự thay đổi trên một đối tượng LFS.

Vì vậy, bạn có thể bao gồm các tệp nhỏ hơn với LFS nếu trong trường hợp sử dụng của bạn, những người đó không thay đổi (thường xuyên). Ngắt cụ thể thậm chí sẽ phụ thuộc vào tốc độ I/O của máy chủ và chủ yếu là độ trễ và thông lượng giữa kho lưu trữ và ứng dụng khách.

Trong ví dụ của bạn, tôi vẫn mong đợi các cải tiến trong trường hợp các png gần như không bao giờ thay đổi. Ngay sau khi họ sẽ thay đổi (gần như) trên mỗi và mọi cam kết thậm chí các tập tin lớn hơn có thể không được hưởng lợi từ việc được đưa vào LFS.

Ngoài ra chi phí thêm của chuyến đi khứ hồi thứ hai sẽ trở nên ít quan trọng hơn và càng lớn thì các tệp thông thường sẽ càng lớn. Đặc biệt khi kích thước của một lớp tập tin (hậu tố) sẽ khác nhau trên một phạm vi rộng và/hoặc tần số thay đổi trong một lớp tập tin bao gồm một phổ rộng có thể không có một câu trả lời rõ ràng cho câu hỏi của bạn.

+1

Tôi đã ấn tượng rằng lợi ích của LFS là thường xuyên thay đổi tập tin nhị phân không thổi phồng kích thước repo. Nhưng nó có vẻ như bạn đang nói, rằng nó thực sự không giúp đỡ khi các tập tin thay đổi thường xuyên; vậy tại sao lại sử dụng nó? – Chad

+0

Phải chính xác hơn. Kích thước Repo theo nghĩa của blob đối tượng (tệp gói) nhỏ hơn. Tôi đã đề cập đến số lượng dữ liệu mà ned được chuyển giao khách hàng betwen và máy chủ (để nói về đẩy và kéo) hoạt động. Do thường các hoạt động cục bộ không có tầm quan trọng lớn và các thay đổi sẽ cần phải so sánh, tôi tập trung vào các khía cạnh chi phí chính với các tệp lớn. LFS sẽ lưu trên bất kỳ hoạt động nào cần xử lý dữ liệu đối tượng. – rpy

+0

Miễn là chỉ số liệu/chỉ số meta có liên quan, bạn không nên trải nghiệm sự khác biệt. Với LFS, kích thước tổng thể của tất cả các tập tin lưu giữ thông tin (kho lưu trữ đầy đủ) sẽ không nhỏ hơn (thậm chí lớn hơn để trung thực, tất cả các phiên bản vẫn cần được lưu trữ), nhưng lưu vào chỉ số/dữ liệu meta sẽ tăng tốc. (tại địa phương hoặc giữa các trường hợp địa phương và remore). Vì vậy, các hoạt động sau đó được tăng tốc. Và điều này sẽ có lợi cho hầu hết các trường hợp mà đối tượng được lưu trữ LFS không phải là đối tượng đã thay đổi. – rpy

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