2011-08-16 22 views
15

Tôi đã thiết lập Git và Gitolite, và tại một số thời điểm tôi nhớ lại đã thấy cài đặt "umask", trong một trong các tệp cấu hình. Điều này có đặt quyền cho tất cả các tệp tôi đồng bộ hóa bằng Git không? Đó là chính xác những gì tôi cần. Tôi có thể tìm thấy nó ở đâu?Đặt umask trong Git/Gitolite

Trả lời

20

umask settings in Gitolite có để thay đổi umask cho repos mới được tạo (và không phải về các tệp được quản lý trong các phiên bản của các repos đó).
Xem gitolite.rc doc:

$REPO_UMASK, bát phân, mặc định 0077

Giá trị mặc định UMASK rằng gitolite sử dụng làm cho tất cả các hợp đồng mua lại và các nội dung của họ có rwx------ quyền. Những người muốn chạy gitweb nhận ra rằng điều này sẽ không làm.

Cách chính xác để giải quyết vấn đề này là cung cấp cho biến này một giá trị như 0027 (lưu ý cú pháp: số 0 đứng đầu), và sau đó làm cho người dùng chạy máy chủ web (apache, www-data, bất cứ điều gì) nhóm 'git'.

Nếu bạn đã cài đặt gitolite thì các tệp hiện có sẽ phải được cố định theo cách thủ công (cho một umask hoặc 0027, có thể là chmod -R g+rX). Điều này là do umask chỉ ảnh hưởng đến quyền đối với các tệp mới được tạo, không ảnh hưởng đến các quyền hiện có.

Cài đặt này cũng tương tự như một trong những sử dụng khi bạn tạo trực tiếp một repo git (không gitolite):

core.sharedRepository 

Khi group (hoặc true), kho được thực hiện có thể chia sẻ giữa nhiều người dùng trong một nhóm (đảm bảo tất cả các tệp và đối tượng có thể ghi nhóm).
Khi all (hoặc world hoặc everybody), tất cả người dùng có thể đọc được, bổ sung là group-shareable.
Khi umask (hoặc false), git sẽ sử dụng quyền được báo cáo bởi umask.

Xem thêm "How do I share a Git repository with multiple users on a machine?" để biết thêm.

Khi bạn có xung đột giữa các nền tảng liên quan đến quyền, bạn cũng có tùy chọn "instruct git to ignore file permissions changes" (git config core.fileMode false).

Cập nhật: Câu trả lời này bao gồm gitolite 2. Với gitolite 3, cài đặt thay đổi từ $REPO_UMASK thành chỉ $UMASK.

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