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?
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
svn2svn đặc biệt cho các cửa sổ (OP yêu cầu một công cụ trên Unix). –