2012-12-19 31 views
75

cấu trúc SVN hiện tại của tôi:Thay đổi SVN URL kho

Path: . 
URL: svn://someaddress.com.tr/project 
Repository Root: svn://someaddress.com.tr 
Repository UUID: ------------------------------------- 
Revision: 10297 
Node Kind: directory 
Schedule: normal 
Last Changed Author: ---- 
Last Changed Rev: 9812 
Last Changed Date: 2010-12-20 17:38:48 +0100 (Mon, 20 Dec 2010) 

Nhưng dự án của chúng tôi (vì thế dịch vụ SVN) sẽ làm việc trên sub.someaddress.com.tr thay vì someaddress.com.tr (someaddress.com.tr sẽ được chuyển đến một nơi khác sớm).

Vì đây là máy chủ phát triển, tôi không thể chắc chắn về việc cần làm. Tôi có cần sử dụng svn switch hoặc svn switch --relocate không? Ngoài ra, tôi có cần phải chuyển đổi svn root someaddress.com.tr hoặc chi nhánh dự án someaddress.com.tr/project?

Trả lời

146

Cho rằng các máy chủ subversion sẽ được chuyển đến DNS bí danh mới này: sub.someaddress.com.tr:

  • Với Subversion 1.7 hoặc cao hơn, sử dụng svn relocate. Relocate được sử dụng khi vị trí của máy chủ SVN thay đổi. switch chỉ được sử dụng nếu bạn muốn thay đổi bản sao làm việc tại địa phương của bạn sang một nhánh khác hoặc một đường dẫn khác. Nếu sử dụng TortoiseSVN, bạn có thể làm theo hướng dẫn từ TortoiseSVN Manual. Nếu sử dụng giao diện dòng lệnh SVN, hãy tham khảo this section of SVN's documentation. Lệnh này sẽ trông như thế này:

    svn relocate svn://sub.someaddress.com.tr/project

  • tiếp tục sử dụng /project cho rằng các nội dung thực tế của kho lưu trữ của bạn có thể sẽ không thay đổi.

Lưu ý: svn relocate không khả dụng trước phiên bản 1.7 (nhờ ColinM để biết thông tin). Trong các phiên bản cũ hơn, bạn sẽ sử dụng:

svn switch --relocate OLD NEW 
+33

svn di dời không có sẵn trước 1.7. Cho trước 1.7 bạn muốn sử dụng 'svn switch - relocate OLD NEW' – ColinM

+0

Các liên kết TortoiseSVN bổ sung rất hữu ích, nhờ đó – MOnsDaR

+0

Không biết lệnh' switch' tất cả tài liệu tôi tìm thấy trực tuyến là dành cho các phiên bản mới hơn. –

5

Trong trường hợp của tôi, svn relocate lệnh (cũng như svn switch --relocate) đã thất bại vì một lý do (có thể repo đã không di chuyển một cách chính xác, hay cái gì khác). Tôi gặp phải lỗi này:

$ svn relocate NEW_SERVER 
svn: E195009: The repository at 'NEW_SERVER' has uuid 'e7500204-160a-403c-b4b6-6bc4f25883ea', but the WC has '3a8c444c-5998-40fb-8cb3-409b74712e46' 

Tôi không muốn tải xuống lại toàn bộ kho lưu trữ, vì vậy tôi đã tìm thấy giải pháp thay thế. Nó làm việc trong trường hợp của tôi, nhưng nói chung tôi có thể tưởng tượng rất nhiều thứ có thể bị hỏng (do đó, hoặc sao lưu bản sao làm việc của bạn, hoặc sẵn sàng để kiểm tra lại toàn bộ repo nếu có điều gì sai).

Địa chỉ repo và UUID của nó được lưu trong tệp cơ sở dữ liệu SQLite .svn/wc.db trong bản sao làm việc của bạn. Chỉ cần mở cơ sở dữ liệu (ví dụ: trong Trình duyệt SQLite), duyệt qua bảng REPOSITORY và thay đổi các giá trị cột rootuuid sang các giá trị mới. Bạn có thể tìm UUID của repo mới bằng cách phát hành svn info NEW_SERVER.

Một lần nữa, coi đây là phương pháp cuối cùng.

+0

@IgorGanapolsky: Bạn có thể cụ thể hơn không? –

+1

Nếu bạn đọc kỹ bài đăng của tôi, tôi không đề nghị chạy bất kỳ lệnh nào. Tôi đề nghị chỉnh sửa DB SQLite. –

3

grepping URL trước và sau khi có thể cung cấp cho bạn một số yên tâm:

svn info | grep URL 

    URL: svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal 
    Relative URL: (...doesn't matter...) 

Và kiểm tra trên phiên bản của bạn (được> 1.7) để đảm bảo, svn relocate là điều đúng đắn để sử dụng:

svn --version 

Cuối cùng, thêm vào ở trên, nếu thay đổi url kho của bạn cũng liên quan đến một sự thay đổi của giao thức bạn có thể cần phải nêu rõ trước khi sau url (còn see here)

svn relocate svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal 
    https://svngate.mycompany.org/svn/repos/trunk/DataPortal 

Tất cả trong một dòng duy nhất của course.Thereafter, có được cảm giác tốt, rằng tất cả diễn ra suôn sẻ:

svn info | grep URL: 

Nếu bạn cảm thấy như nó, hơn một chút tự tin, URL svn repo mới được kết nối và làm việc:

svn status --show-updates 
svn diff 
Các vấn đề liên quan