2010-11-11 38 views
16

Làm cách nào tôi có thể thay đổi (di dời) url phụ lật mà tôi đã nhập khi tạo kho lưu trữ gương bằng cách sử dụng "svnsync init" (ví dụ từ #https: // any to svn: // whatever)?Làm thế nào để thay đổi url svn trong svnsync?

cố gắng chạy svnsync init lại với url mới nhưng

svnsync init file:///<path_to_mirror> http:///<new_url> 
svnsync: Destination repository is already synchronizing from 'http:///<old_url>' 
+0

bạn đã thử sử dụng svnsync với url mới cho tiếp theo đồng bộ của. Cảm giác ruột của tôi là nó sẽ hoạt động. –

+0

đã cố gắng gọi lại svnsync init với url mới nhưng điều này không hoạt động - svnsync nói rằng kho lưu trữ gương được đồng bộ hóa với url "cũ" – sdu

Trả lời

19

Các đồng bộ từ URL được lưu giữ như một revprop trong repo gương. Nếu trên máy với các kho gương (hoàn cảnh của tôi), sử dụng svnlook công cụ để tìm kiếm và svnadmin để thay đổi:

[email protected][~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url 
svn+ssh://svn.abc.com:1234/svn/[email protected][~]$ 

Bạn sẽ thấy URL của repo mà gương của bạn hiện đồng bộ . Trong ví dụ trên, URL repo chính kết thúc bằng ... /foo. Nó có thể không có một dòng mới ở cuối, do đó, dấu nhắc trình bao của bạn có thể làm theo. Bây giờ bạn cần phải nhận được rằng vào một tập tin như svnadmin sử dụng một tập tin cho đầu vào để thay đổi revprops.

[email protected][~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url > t.txt 
[email protected][~]$ 

Bây giờ sửa t.txt để thay đổi URL vào repo chủ. Điều này có thể khiến một dòng mới xuất hiện ở cuối t.txt và dẫn đến thông báo lỗi không rõ ràng/vô nghĩa từ svnsync. Vì vậy, được thoát khỏi nó:

[email protected][~]$ cat t.txt | tr -d '\n' > t2.txt 

Lưu ý rằng bây giờ chúng tôi có t2.txt đó là file vệ sinh. Sau đó sử dụng svnadmin để thay đổi revprop các nội dung của tập tin vừa thay đổi nội dung và khử trùng:

[email protected][~]$ svnadmin setrevprop /path/to/mirror/repo -r0 svn:sync-from-url t2.txt 
[email protected][~]$ 

Note t2.txt được sử dụng không t.txt. Cuối cùng, kiểm tra những thay đổi của bạn:

[email protected][~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url 
svn+ssh://svn.def.com:5678/svn/[email protected][~]$ 

Bạn sẽ thấy URL repo mới của bạn ngay lập tức theo sau dấu nhắc shell, không có xuống dòng. Trong ví dụ trên, URL kết thúc bằng foo và được theo sau bởi dấu nhắc shell [email protected] [~] $.

+0

Tôi đã làm theo các bước này và gặp lỗi khi thử svnsync sync/repo/path svnsync: Kho lưu trữ UUID '72fa8357-5795-f84a-b72d-10573eb4d6c2' không khớp với UUID 'a3f6904a-36ca-4011-b160-aab731c98da0' – popalka

+2

sửa đổi tệp db \ revprops \ 0 \ 0 và thay đổi svn: sync-from- uuid thuộc tính. bây giờ tất cả đều ổn – popalka

13

Nếu bạn sử dụng tài khoản mà bạn sử dụng để chạy svnsync với bạn chỉ có thể sử dụng:

svn propset --revprop -r 0 svn:sync-from-url http://my.new/url url://to.my.repo 

Nếu bạn làm theo các hướng dẫn trong cuốn hướng dẫn và thêm một cái móc pre-rev-đạo cụ mà phủ nhận tất cả mọi người nhưng svnsync người sử dụng để thay đổi các đạo cụ rev này nên làm việc.

0

Svnsync lưu trữ URL của kho lưu trữ từ xa trong thuộc tính sửa đổi của bản sửa đổi đầu tiên của máy nhân bản kho. Vì vậy, bạn có thể view URL kho hiện cấu hình trên gương địa phương của bạn như thế này:

$ svn pg --revprop -r0 svn:sync-from-url file:///path/to/svn-mirror 

Điều đó có nghĩa cho việc thay đổi URL kho từ xa mà bạn chỉ phải change the revision property.Ví dụ:

$ svn ps --revprop -r0 svn:sync-from-url https://svn.example.org/repo \ 
     file:///path/to/svn-mirror/ 

Ví dụ đầu ra:

property 'svn:sync-from-url' set on repository revision 0 
Các vấn đề liên quan