2012-02-10 20 views
5

Tôi có một kho lưu trữ subversion là một bản sao của một kho lưu trữ từ xa khác. Tôi sử dụng svnsync để nhân bản kho lưu trữ mỗi tuần. Kho lưu trữ nhân bản (bản sao cục bộ) chỉ có ở đó để sao lưu.Subversion - Có thể vô hiệu hóa tất cả các cam kết và chỉ đọc kho lưu trữ không?

Tôi muốn giữ kho được nhân đôi là READ-ONLY, nghĩa là không ai có thể thực hiện bất kỳ thay đổi nào cho kho lưu trữ này nhưng chúng có thể sử dụng nó để đọc tệp nguồn vì nó nhanh hơn kho lưu trữ từ xa.

Tôi đã xem xét trên Google và có vẻ như Hook có lẽ là lựa chọn tốt nhất. Vấn đề duy nhất là tất cả các ví dụ tôi thấy trên Google là dựa trên Unix và tôi không thể tìm thấy một ví dụ phù hợp cho Windows khi kho lưu trữ được nhân đôi đang chạy trên Windows Server.

Bất kỳ ý tưởng nào?

Trả lời

5

Tại sao không chỉ định cấu hình anon-access = read và auth-access = đọc trong svnserve.conf?

+0

Tôi chỉ thử điều đó nhưng nó vẫn cho phép cam kết - Tôi bỏ ghi chú cả hai thuộc tính trong tập tin /myrepository/conf/svnserve.conf – ziggy

+0

Hãy nhớ rằng mặc định cho truy cập anon được đọc để nhận xét nó là ok, nhưng mặc định để auth-access được viết, do đó bạn phải đặt nó explictly để đọc. – mac

+0

Có, tôi đã thử thay đổi quyền truy cập auth để chỉ đọc nhưng tôi vẫn có thể cam kết. Tôi đang sử dụng cạnh Subversion của Collabnet. Nó có một tùy chọn để hạn chế truy cập thông qua giao diện đồ họa nhưng tôi đoán việc thay đổi svnserve theo cách thủ công cũng sẽ hoạt động. – ziggy

6

Trước hết, bạn có đang sử dụng http:// hoặc svn:// trong URL thanh toán của mình không?

Nếu bạn đang sử dụng svn://, bạn có thể định cấu hình tệp svnserve.conf trong kho lưu trữ của mình để xóa quyền truy cập được ủy quyền bằng cách chỉ cần tải tệp rỗng. Truy cập ẩn danh theo mặc định là 'chỉ đọc', miễn là bạn không thay đổi cài đặt đó trong tệp svnserve.conf của mình, bạn sẽ ổn. Hoặc, bạn có thể tắt quyền truy cập ẩn danh và thay đổi quyền truy cập được cấp phép thành read-only.

Tuy nhiên, nếu bạn đang sử dụng http://, bạn phải định cấu hình cấu hình httpd Apache của mình trên máy chủ Subversion của mình để không cho phép quyền ghi.

Điều đó trở nên phức tạp hơn vì có nhiều cách thiết lập xác thực httpd Apache và tùy thuộc vào hệ thống, Apache httpd có thể được lưu trữ ở nhiều vị trí.

Một khả năng khác là sử dụng pre-commit hook để tắt tất cả quyền truy cập đọc-ghi vào kho lưu trữ. Bằng cách này, lệnh svnsync cũ sử dụng để yêu cầu không chỉ svn đọc-ghi truy cập để cam kết thay đổi nó đã được đồng bộ hóa, nhưng cũng đã có bộ móc trước khi thay đổi revprop-thay đổi, do đó, lệnh svnsync cũng có thể sửa đổi các thuộc tính svn:log, svn:datesvn:author phù hợp với kho lưu trữ ban đầu. Điều đó có nghĩa là, nếu bạn quản lý để tạo kho lưu trữ chỉ đọc, bạn có thể vi phạm svnsync. Bạn sẽ cần phải đọc về cách svnsync hoạt động và liệu đây có phải là trường hợp không. Móc trước của tôi có thể giải quyết vấn đề đó.