2009-08-01 18 views
6

Tôi đang sử dụng Subversion cho một trong các dự án PHP của mình. Tôi có hai câu hỏi/vấn đề:Subversion xử lý quyền tệp và tệp .htaccess như thế nào?

  1. Quyền của tệp được xử lý với Subversion như thế nào? Nếu tôi có một tập tin mà tôi CHMOD đến 755, và tôi kiểm tra tập tin đó vào kho lưu trữ, nó sẽ có quyền tương tự khi nó được kiểm tra ra các bản sao làm việc khác? Nếu nó không sao chép, tôi có thực sự cần phải thay đổi quyền với mọi thanh toán không?
  2. Tôi có tệp .htaccess mà tôi không muốn kiểm tra trong kho lưu trữ. Nếu tôi làm một bản cập nhật trên một bản sao làm việc có chứa một .htaccess (nhưng kho lưu trữ không có tệp đó), tệp sẽ bị xóa hoặc bản cập nhật sẽ để lại một mình?

Trả lời

11
  1. Quyền duy nhất Subversion biết, là bit thực thi, được lưu trữ dưới dạng thuộc tính "svn: executable" đặc biệt. Nếu thuộc tính này được xác định, tệp được kiểm tra với bộ bit exec. Đối với cờ rw, nó phụ thuộc vào umask của bạn. Nếu umask của bạn là ví dụ 0022, một tệp không có bit svn: executable sẽ được kiểm tra với quyền 0644. Nếu umask của bạn là 0002, quyền sẽ là 0664. Nếu svn: executable được đặt, bit exec được đặt cho chủ sở hữu, nhóm và mọi người khác.
  2. Nếu bạn không đánh dấu .htaccess để bổ sung (svn add), svn sẽ để tệp đó một mình. Nó sẽ không đi vào repo khi cam kết, và nó sẽ không bị xóa khi bạn chạy cập nhật svn. Bạn sẽ thấy một "?" ở phía trước của nó khi bạn chạy "trạng thái svn".
+0

Cảm ơn lời giải thích tuyệt vời sunny256. Tôi không thực sự là một chuyên gia khi nói đến quyền truy cập, nhưng tôi biết rằng tôi có một số thư mục cần phải có 755 và những thư mục khác cần phải có 644 hoặc 777. Vì vậy, trong ngắn hạn, là câu trả lời bạn đã đưa ra một không cho rằng ? Nếu vậy, tôi có thực sự cần phải thay đổi các điều khoản theo cách thủ công cho mỗi lần thanh toán hoặc có cách nào khác không? Cảm ơn một lần nữa. –

+0

Nếu bạn cần có quyền đặc biệt đối với một số thư mục, bạn có thể muốn tạo tập lệnh cập nhật bản sao làm việc và sau đó chmod các thư mục khác nhau, ví dụ như Makefile được đặt bên ngoài khu vực công khai www. Bạn có muốn ẩn nội dung cho người dùng www-data, giới hạn nội dung đó cho chỉ người dùng hay không? Nếu bạn đặt quyền thư mục là 644 (loại bỏ bit thực thi, nghĩa là 111), không ai có thể nhập nó. – sunny256

+0

Nếu bạn muốn kiểm tra tất cả các kết hợp rwx trên các thư mục, hãy tạo một kiểm tra trống, nhập nó và thực hiện như sau. Nó sẽ tạo ra 512 thư mục với tất cả các kết hợp rwx có thể có, và bạn có thể thấy các quyền làm việc như thế nào. Ở đây đi: cho một trong $ (seq 0 7); làm cho b bằng $ (seq 0 7); làm cho c bằng $ (seq 0 7); do echo Tạo $ a $ b $ c ...; mkdir $ a $ b $ c; chmod $ a $ b $ c $ a $ b $ c; làm xong; làm xong; thực hiện – sunny256

0

1) ... quyền sẽ không chuyển.

2) ... bản cập nhật sẽ để lại một mình miễn là bản cập nhật không nằm trong quyền kiểm soát phiên bản.

Điều đó nói rằng, hãy kiểm tra kỹ các ý tưởng đó. Xin vui lòng.

+0

Cảm ơn đã phản ứng. Bạn có ý gì khi "kiểm tra lại những ý tưởng đó"? Nếu tôi làm sai điều gì đó, tôi rất muốn nhận lời khuyên của bạn. Cảm ơn :) –

1

Đối với # 2, bạn có thể chỉ cần thêm .htaccess vào thuộc tính svn: ignore. Dưới đây là một lựa chọn tốt về cách thức hoạt động và cách thức hoạt động của http://blog.bogojoker.com/2008/07/command-line-svnignore-a-file/ Quyền nếu bạn kiểm tra tệp được quyền đọc/ghi trừ khi nó thực thi có quyền svn: executable và sẽ được kiểm tra như vậy. Các tập tin cũng có thể được đánh dấu rõ ràng với svn: nhu cầu-lock sau đó làm cho nó chỉ đọc khi bạn kiểm

+0

Tôi đã đọc rằng svn: thực thi chỉ hoạt động trên các tệp. Làm thế nào tôi có thể thực hiện điều đó cho các thư mục, hoặc tôi cần phải tự thay đổi các điều khoản với mỗi thanh toán? –

+0

Bạn có thể thực hiện "svn propset svn: executable '*' " và cam kết trên bao nhiêu tệp tùy ý và từ điểm đó trên đó sẽ giữ lại cờ thực thi. – Bostone

1
  1. Như đã đề cập, SVN sẽ không cho phép lưu trữ.

    Lý do là tầm thường:

    Người dùng đã làm các kiểm tra sẽ là chủ sở hữu của tất cả các file bên trong bản sao làm việc của mình, vì vậy nó không có ý nghĩa để cho phép như ông đã có đọc/ghi quyền trên tất cả tập tin bên trong bản sao làm việc của mình (tùy thuộc vào umask của mình).

    Đối với e x cờ có thể thay đổi được svn-property svn: executable.

  2. tập tin .htaccess

    Bạn nên thêm .htaccess vào thư mục mẹ svn: ignore tài sản.

    Tuy nhiên, SVN sẽ không bao giờ thay đổi hoặc ghi đè thay đổi của bạn mà không hỏi bạn trước.Vì vậy, nếu một số người bạn của bạn sẽ lưu trữ .accessfile vào kho lưu trữ, SVN sẽ ngừng cập nhật và sẽ đề cập đến tệp .htaccess của riêng bạn phải được loại bỏ để tiếp tục.

-4

Một ví dụ về cách tạo ra một tập tin thực thi:

svn propset svn:executable ON filename 
Các vấn đề liên quan