2010-05-21 18 views
5

tôi đang sử dụng subversion như RCS. Luôn luôn khi một phiên bản mới của dự án của tôi bị phạt tôi tạo ra một thẻ của nó (bản sao của thân cây). Có ai biết cách tôi có thể bảo vệ thư mục được gắn thẻ này khỏi bị vô tình sửa đổi không?Subversion: Viết bảo vệ cho các thư mục được gắn thẻ

Hiện tại là giải pháp thay thế, tôi khóa tất cả các tệp. Nhưng ngưỡng này có nghĩa là người dùng có khóa có thể chỉnh sửa các tệp.

Có giải pháp nào tốt hơn không?

Trả lời

5

Bạn có thể sử dụng móc trước khi cam kết để ngăn người dùng ghi vào thư mục tags sau khi được tạo.

Xem câu hỏi này liên quan SO ví dụ:
SVN pre-commit hook for avoiding changes to tags subdirectories

+0

Móc trước cam kết là các tập lệnh có thể thực hiện những điều phức tạp hơn, như chỉ cho phép những thay đổi trong thư mục thẻ của một số người dùng nhất định. –

+0

Nếu một móc trước cam kết là cách chính thức, tôi sẽ đặt thuộc tính SVN "svn: needs-lock" trên tất cả các tệp thay thế. – Alexander

+1

Không cài đặt thuộc tính trên tất cả các tệp ... điều này trái với ý tưởng của SVN. Câu trả lời được đưa ra về ủy quyền dựa trên đường dẫn là cách chính xác. – khmarbaise

2

bạn có thể cho chỉ đọc cho phép trên các thư mục thẻ sử dụng path-based authorization.

+0

Vấn đề với giải pháp này là bạn không thể tạo mới 'thẻ'. Nếu một số người dùng nhất định được cấp quyền ghi thì luôn có khả năng sửa đổi nhầm các tệp trong thẻ. –

+0

Bạn có thể đặt chỉ đọc các thẻ sau khi tạo chúng, để thư mục con thông thường/thẻ có thể ghi: es:/myproject/tags có thể ghi, trong khi/myproject/tags/my-first-tag được đặt thành chỉ đọc sau khi tạo thẻ. –

0

Nếu bạn đặt thuộc tính svn:needs-lock cho tất cả các tệp trong thẻ, tất cả các tệp sẽ được kiểm tra dưới dạng chỉ đọc trừ khi người dùng sử dụng khóa một cách rõ ràng. Điều này sẽ (trong hầu hết các trường hợp) ngăn chặn các tập tin được thay đổi. Nó không ngăn cản bất kỳ ai thay đổi cờ chỉ đọc hoặc lấy khóa, nhưng nó làm giảm cơ hội sửa đổi ngẫu nhiên.

Bản thân Subversion không thể áp dụng thuộc tính svn:needs-lock vào thư mục, nhưng trong ứng dụng TortoiseSVN (Windows) chẳng hạn nếu bạn cố gắng làm như vậy, nó sẽ áp dụng thuộc tính cho tất cả các tệp trong thư mục và thư mục con thay thế. Nó sẽ không cho phép bạn làm điều này từ trình duyệt repo TortioseSVN, vì vậy bạn phải kiểm tra một bản sao làm việc của thẻ, sửa đổi các thuộc tính, và sau đó kiểm tra trong các thay đổi tài sản. Các khách hàng khác có thể thay đổi; nếu bạn đang sử dụng trình khách dòng lệnh lật đổ gốc, một kịch bản trình bao thích hợp hoặc tương tự có thể cần thiết để lặp qua các tệp và thư mục con để áp dụng thuộc tính hàng loạt. TortoiseSVN ít nhất cũng cảnh báo bạn nếu bạn cố gắng thay đổi bất kỳ thứ gì trong một thư mục Tags - nhưng đó chỉ là một quy ước, không phải là sự thực thi.

Giải pháp svn:needs-lock hơi yếu và dễ dàng bị phá vỡ và không ngăn các tệp mới bị thêm vào thư mục thẻ; một giải pháp thay thế mạnh hơn là tạo người dùng giả và lấy khóa cho toàn bộ thẻ trong tên người dùng đó. Điều này sẽ ngăn người dùng "thực" không thể đăng ký và bản sao làm việc sao chép sẽ có thuộc tính chỉ đọc của họ giống như svn:needs-lock - sự khác biệt là họ sẽ không thể lấy khóa và thay đổi thuộc tính chỉ đọc bản sao làm việc sẽ không cho phép đăng ký.

+0

Tôi biết câu hỏi là cũ, nhưng tôi đã tìm kiếm một giải pháp cho chính xác điều này và tìm thấy câu hỏi này. Câu trả lời này mô tả những gì tôi hiện đang có ý định làm vì dường như không có sự hỗ trợ trực tiếp cho việc này. – Clifford

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