2010-03-16 28 views
5

Tôi đã cam kết một dự án bên thứ 3 vào kho lưu trữ svn của riêng tôi. Bây giờ, tôi đã có một phiên bản mới của dự án đó và tôi muốn thay thế nó trong kho lưu trữ của mình.Hợp nhất cấu trúc thư mục không phiên bản vào kho SVN

Dự án khá lớn (1.2GB) và phiên bản mới có tệp/thư mục mới và cũng có thể xóa các tệp/thư mục.

Giải pháp tầm thường là

svn rm project 
mv /path/to/new/project . 
svn add project 
svn ci 

Tuy nhiên, tôi mất lịch sử cho tất cả mọi thứ. Ngoài ra, máy chủ svn sẽ không thể sử dụng nén đồng bộ (Có, không gian máy chủ không quan trọng).

Một cách khác là chỉ ghi đè lên tất cả các tệp trong thư mục làm việc và sau đó cam kết. Tuy nhiên, các tệp đã xóa vẫn còn trong kho lưu trữ. svn add --force * cũng "quên" để thêm một số tệp.

Khả năng khác để cam kết phiên bản mới là gì? Đây có phải là trường hợp sử dụng không bình thường do đó không có hỗ trợ tích hợp cho điều này? (Với Tortoise SVN, tôi sẽ lộn xộn với các thư mục .svn, Tortoise đề nghị xóa các tệp/thư mục bị thiếu trong hộp thoại cam kết, nhưng phiên bản dòng lệnh từ chối cam kết nếu nó gặp phải các tệp/thư mục không bị xóa bằng cách sử dụng svn rm)

Thêm 1: Làm cách nào để tránh những thay đổi trong kho lưu trữ của tôi bị ghi đè? (Chỉ có ít, vì vậy việc đăng ký lại có thể chấp nhận được vào lúc này)

Thêm 2: Tôi đã thay thế tất cả các liên kết với bản sao đích (Để loại bỏ các lỗi special status changed). Làm thế nào để tránh điều này?

Thêm 3: Cách đối phó với các tệp/thư mục được đổi tên? Vì tôi chỉ nhận được phiên bản mới mà không có lịch sử thay đổi, nên không thể xác định được phiên bản đó một cách tự động. svn mv trước khi cam kết?

Trả lời

5

Công cụ fs2svn, một phần của svn2svn thực hiện những điều cơ bản về nội dung bạn đang tìm kiếm. Bắt đầu với this post.

+0

Cảm ơn bạn! Tuy nhiên, trong khi đó tôi chuyển sang 'git' cho phép cập nhật kiểu như vậy (' git -A') – Meinersbur

+0

svn2svn đặc biệt cho các cửa sổ (OP yêu cầu một công cụ trên Unix). –

1

Bạn có thể thử phương pháp mà tiểu ước đề xuất để hợp nhất trong mã nhà cung cấp thông qua chi nhánh nhà cung cấp, sau đó kết hợp thân cây. Họ cũng có một công cụ, svn_load_dirs.pl, để giúp bổ sung, xóa bỏ và di chuyển trong phiên bản ngược dòng.

chi tiết có thể được tìm thấy tại địa chỉ: http://svnbook.red-bean.com/en/1.6/svn.advanced.vendorbr.html

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