2011-07-29 30 views
9

Sử dụng repo được chia sẻ (core.sharedRepository = group), chúng tôi gặp phải một số vấn đề với git tạo các tệp chỉ đọc (quyền 444). Không có vấn đề mà git cấu hình các mục tôi twiddle luôn luôn có vẻ là một số siêu dữ liệu chỉ đọc được tạo ra ở phía máy chủ khi chúng tôi đẩy. Các tệp này nằm trong .git/(hoặc các đối tượng/trong một repo trần).Tại sao git tạo tệp chỉ đọc (444)?

Bạn có thực sự không bao giờ cần ghi lại các tệp này một lần nữa (bất kể bạn đang thực hiện thao tác git nào)? Họ có thể đại diện cho vùng đồng bằng, vì vậy thực sự không nên thay đổi, nhưng tôi hy vọng ai đó có thể làm rõ điều này.

Để tìm hiểu, các dòng có liên quan sẽ là 856 và 867 của tệp builtin/index-pack.c trong git.

+0

umask trong ENV được đặt chính xác? – sleeplessnerd

+1

Có, umv ENV là 007. – Matthew

Trả lời

13

Các tệp đó là một phần của cơ sở dữ liệu đối tượng, thực sự là chỉ đọc. Bất kể bạn làm gì với Git, bạn không thể thay đổi nội dung của một đối tượng cụ thể khi nó đã được tạo.

Lưu ý rằng nếu bạn sao lưu ra một cam kết và tạo một hình mới vào chỗ của nó, bạn sẽ được tạo ra một đối tượng mới với một định danh mới nội dung mới. Git cuối cùng sẽ thực hiện bộ sưu tập rác của mình để loại bỏ (các) đối tượng cũ, không được xử lý.

+0

Cảm ơn, Greg. Tôi đã hy vọng cho một số tài liệu tham khảo để tài liệu hướng dẫn. Điều này có được báo cáo ở bất kỳ đâu trong tài liệu git không? – Matthew

+1

@Matthew: Đây là một tài liệu tham khảo trong wiki Git: https://git.wiki.kernel.org/index.php/Git#Implementation Bạn có thể tìm những người khác bằng cách tìm kiếm "cơ sở dữ liệu đối tượng git không thay đổi". –

+0

Cảm ơn, Greg. Mẹo tốt. – Matthew

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