2012-05-17 30 views
8

Tôi muốn sao chép một dự án git (từ github, nói) và có thư mục cấp cao nhất có thể ghi được theo nhóm.'git clone' tôn trọng umask, ngoại trừ thư mục dự án cấp cao nhất

Tôi đã thử một vài thứ khác nhau. Đầu tiên, chỉ cần đặt umask trước khi nhân bản.

$ umask 
0002 

tập tin mà tôi tạo ra sau đó được ghi bởi nhóm

$ touch test 
$ ls -l test 
-rw-rw-r-- 1 user group 0 2012-05-17 09:32 test 

Bây giờ tôi cố gắng git clone

$ git clone [email protected]:user/repo.git 
Cloning into repo... [succeeds] 

Nhưng thư mục bản sao không ghi được theo nhóm.

$ ls -ld repo 
drwxr-xr-x 11 user group 4096 2012-05-17 09:32 repo 

Tôi đã thử điều tương tự với repo được tạo bằng git init --shared=umask (đã là mặc định) trong thư mục có 775 quyền. Sau khi đẩy github git clone nhận được kết quả tương tự.

Đây không phải là một vấn đề lớn, tôi có thể chmod trong tập lệnh thanh toán của mình. Nhưng nếu có một cách thích hợp/xây dựng để làm điều này, đó là thích hợp hơn. Git là phiên bản 1.7.4.1 trên Ubuntu 11.04.

Bất kỳ ý tưởng hoặc liên kết nào được đánh giá cao. Tôi thấy this post, but it uses chmod, tôi đã không thể tìm thấy nhiều thứ khác về điều này. Cảm ơn!

Trả lời

2

Hãy thử thiết lập các "core.sharedRepository = nhóm" toàn cầu chỉ cho lệnh bản sao:

git -c "core.sharedRepository=group" clone [email protected]:user/repo.git 
ls -ld repo/.git 
drwxrwsr-x 8 user user 4096 Jul 4 22:16 repo/.git/ 
+0

Hey @ fork0, cảm ơn bạn đã trả lời. Thư mục .git của tôi và tất cả các tệp dự án đã được nhóm ghi, nhờ vào umask của tôi. Để làm rõ, tôi đang cố gắng để có thư mục cấp cao nhất của dự án là nhóm có thể ghi (tức là 'ls -ld repo' sẽ hiển thị' drwxrwxr-x'). Thiết lập 'core.sharedRepository = group' thực hiện giống như' git init --shared = group' đằng sau hậu trường, và không làm cho thư mục cấp cao nhất có thể ghi được theo nhóm. –

+0

Tôi hiểu. Không, nó không – fork0

+0

Vì vậy, có, nó không. Tôi không nghĩ Git có bất cứ điều gì cho việc này, nhưng hãy để tôi kiểm tra ... – fork0

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