2011-01-20 23 views
7

Tôi đang đồng bộ hóa kho SVN giữa hai hệ thống bằng svnsync và tôi không chắc chắn 100% nếu có thể làm cho nó độc lập với "người dùng mới" của tôi sau đồng bộ hóa đã hoàn tất.Đồng bộ hóa một kho lưu trữ SVN và sau đó làm cho nó độc lập (sao chép kho lưu trữ)

Tôi cần làm gì để biến nó thành một thực thể hoàn toàn độc lập? Có đủ chỉ để thay đổi tập tin passwd không?

Trả lời

10

Tôi cần làm gì để biến nó thành một thực thể hoàn toàn độc lập?

Liên kết duy nhất giữa kho lưu trữ mới và tài liệu gốc là một số thuộc tính sửa đổi được sử dụng bởi svnsync synchronize. Bạn có thể xóa an toàn những người như thế này:

svn propdel --revprop -r 0 svn:sync-from-uuid http://svn.example.com 
svn propdel --revprop -r 0 svn:sync-last-merged-rev http://svn.example.com 
svn propdel --revprop -r 0 svn:sync-from-url http://svn.example.com 

Điều này không làm được gì nhiều ngoại trừ việc đảm bảo rằng svnsync synchronize không thể chạy được nữa.

chỉnh sửa: Chỉ cần nghĩ đến điều gì đó khác. Bạn có thể đã sử dụng các thuộc tính svn:externals trong các dự án của mình để trỏ đến một kho lưu trữ khác hoặc một vị trí khác trong cùng một kho lưu trữ.

Một nên sử dụng relative URL syntax cho các liên kết trong cùng một kho lưu trữ, trong trường hợp đó không có vấn đề gì. Nhưng nếu một URL tuyệt đối được sử dụng cho điều đó, thì các liên kết như vậy sẽ tiếp tục trỏ đến kho lưu trữ ban đầu sau svnsync. Bạn có thể kiểm tra tất cả svn:externals tính như thế này (có thể mất một thời gian, đệ quy quét tất cả các thư mục):

svn propget -R svn:externals http://svn.example.com/ 
+0

Bất kỳ ý tưởng nào để sửa các thuộc tính 'svn: externals' đó trên các bản sửa đổi hiện có? – 0xC0000022L

+0

@STATUS_ACCESS_DENIED: Một cách để chỉ cần remap các phần tử bên ngoài ([như trong mercurial] (http://mercurial.selenic.com/wiki/SubrepoRemappingPlan)) cho các phiên bản hiện tại bị thiếu trong SVN. Nó có thể vẫn còn có thể bằng cách viết lại lịch sử ('svnadmin dump' toàn bộ kho lưu trữ, các URL tìm kiếm và thay thế, sau đó tải' svnadmin' trong một repo mới), nhưng đó là toàn bộ một trò chơi bóng khác. Tôi chưa bao giờ thử điều đó. –

+0

cảm ơn phản hồi. Tôi sợ điều đó ...: - | – 0xC0000022L

0

Về cơ bản, bạn cần cấu hình apache để:

  • tham chiếu repo mới với một URL khác nhau và một khác nhau AuthName
  • tuyên bố người dùng mới của bạn trong file conf/authz của nói repo mới.
  • tuyên bố mật khẩu của họ (nếu bạn đang sử dụng: chế độ AuthType Basic xác thực q)

Có mật khẩu khác nhau là không bắt buộc: một khi kho hai được điều trị bằng hai địa chỉ khác nhau (dưới apache cùng hoặc hai khác nhau 'apache'), chúng sẽ độc lập với cái khác.

+0

I * nghĩ * nguồn đang sử dụng các thiết lập Apache loại và tại điểm đến Tôi đang sử dụng svnserve thông qua SSH (theo http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.serverconfig.choosing) – siliconpi

+0

@ matt74m: vì vậy cơ chế xác thực sẽ khác nhau, các địa chỉ cũng vậy. Hai repos đó sẽ khá độc lập (trừ khi bạn cần phải đồng bộ hóa chúng thường xuyên) – VonC

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