2010-10-27 39 views
31

Tôi đang cố gắng triển khai Git để quản lý nội dung quảng cáo (Photoshop, Illustrator, Maya, v.v.) và tôi muốn loại trừ các tệp khỏi Git dựa trên kích thước tệp thay vì tiện ích, vị trí, v.v.gitignore theo kích thước tệp?

Ví dụ, tôi không muốn loại trừ tất cả các tệp .avi, nhưng có một số tệp avi + 1GB lớn trong các thư mục ngẫu nhiên mà tôi không muốn cam kết.

Mọi đề xuất?

+1

Tôi sẽ cảnh báo rằng Git được biết là có hiệu suất kém với các tệp nhị phân lớn và vấn đề này hiện chỉ đang được giải quyết chậm. Tôi khuyên bạn nên chống lại việc sử dụng Git cho những thứ bên cạnh văn bản thuần túy. – erjiang

+0

@erjiang: Đồng ý. (ngoại trừ các tệp nhị phân nhỏ là hoàn toàn tốt đẹp, chắc chắn, chúng không thể được ưa chuộng, nhưng VCS không thể làm điều đó) Tất nhiên, OP nói rằng anh ta không muốn theo dõi các tệp lớn, vì vậy nó có thể ổn ! – Cascabel

+2

Chắc chắn không có cách tích hợp để thực hiện việc này. Bạn có thể sắp xếp thực hiện nó bằng cách thêm một móc trước cam kết kiểm tra kích thước của tất cả các tệp được cam kết và hủy bỏ nếu có vượt quá ngưỡng. Bạn có thể thêm tự động hóa bổ sung, nhưng hãy cẩn thận. Điều cuối cùng bạn muốn là mất dữ liệu bằng cách vô tình bỏ qua nội dung quan trọng. (Để tăng nguy hiểm, bạn có thể: tự động unstage các tập tin lớn, tự động thêm chúng vào gitignore, và thậm chí tiến hành cam kết sửa đổi thay vì hủy bỏ.) – Cascabel

Trả lời

31

Tôi mới đến .gitignore, vì vậy có thể có những cách tốt hơn để làm điều này, nhưng tôi đã không bao gồm các tập tin bằng cách sử dụng kích thước tập tin:

find . -size +1G | cat >> .gitignore 

Rõ ràng bạn sẽ phải chạy mã này thường xuyên nếu bạn đang tạo nhiều tệp lớn.

+0

Đây là một cách tuyệt vời để kiểm soát thư mục 'wp-content/uploads' khi triển khai các trang web lớn được xây dựng trong WordPress. Cám ơn vì cái này. –

+3

Tôi thấy rằng tôi cần xóa bỏ '. /' Hàng đầu từ đầu mỗi tệp trước khi gitignore hoạt động – IanB

+1

Đây là một luồng rất cũ, nhưng trong trường hợp ai đó vấp phải nó và cần một giải pháp có thể dán được: 'tìm. -size + 1G | sed 's |^\ ./ || g' | cat >> .gitignore' – antass

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