Công ty tôi đang làm việc đang bắt đầu và họ đã thay đổi tên của họ trong quá trình này. Vì vậy, chúng tôi vẫn sử dụng tên gói com.oldname vì chúng tôi sợ phá vỡ lịch sử thay đổi tệp hoặc liên kết tổ tiên giữa các phiên bản hoặc bất kỳ thứ gì chúng tôi có thể phá vỡ (tôi không nghĩ rằng mình sử dụng đúng cụm từ, nhưng bạn có khái niệm).Làm cách nào để đổi tên các gói Java mà không phá vỡ lịch sử Subversion?
Chúng tôi sử dụng: Eclipse, TortoiseSVN, Subversion
tôi thấy somewhere rằng tôi nên làm điều đó trong nhiều bước để ngăn chặn rời rạc giữa nội dung của thư mục svn và tên gói trong file java:
- Đầu tiên sử dụng TortoiseSVN để đổi tên thư mục, cập nhật thư mục .svn.
- Sau đó, đổi tên thư mục trở lại tên gốc theo cách thủ công.
- Để cuối cùng sử dụng Eclipse để đổi tên các gói (refactor) trở lại tên mới, cập nhật các tệp java.
Điều đó có vẻ tốt với tôi, nhưng tôi cần biết liệu tổ tiên và lịch sử và mọi thứ khác sẽ vẫn mạch lạc và hoạt động tốt.
Tôi không có chìa khóa cho máy chủ đó, đó là lý do tại sao tôi không vội vàng sao lưu mọi thứ và thử một hoặc hai thứ. Tôi muốn đưa ra một lý do chính đáng để không làm điều đó, hoặc một cách để thực hiện nó.
Cảm ơn bạn đã giúp đỡ của bạn,
M. Joanis
Package đổi tên thử nghiệm
Thủ tục:
- Tạo một com.oldname.test gói mới .renametest.subpackage.
Thêm một lớp mới dưới renametest gọi RenameTest0.java và chứa:
class RenameTest0 { public RenameTest0() { showMessage(); new RenameTest1(); } public static void showMessage() { System.out.println("RenameTest0!"); } public static void main(String[] args) { new RenameTest0(); } }
Thêm một lớp mới dưới renametest.subpackage chứa:
class RenameTest1 { public RenameTest1() { showMessage(); RenameTest0.showMessage(); } public static void showMessage() { System.out.println("RenameTest1!"); } }
Kiểm tra rằng RenameTest0 chạy tốt.
- Cam kết.
- Thay đổi thông báo của cả hai lớp.
- Cam kết.
- Một lần nữa, thay đổi thông điệp của một lớp và cam kết (chỉ cần tạo một số lịch sử).
- Áp dụng thủ tục được đề xuất ở trên (ba bước trong thư gốc) để đổi tên gói renametest thành testrename.
- Cam kết.
- Chạy thử nghiệm.
- Sửa đổi lại thư và kiểm tra.
- Cam kết.
- Cố gắng quay lại phiên bản khi cả hai tin nhắn đã được thay đổi đồng thời lần đầu tiên.
- Nếu mọi thứ hoạt động tốt đến thời điểm này, có vẻ tốt, phải không?
Kết quả kiểm tra:
- Lưu ý về bước 9: Đã phải làm điều đó trong thứ tự ngược (Eclipse đổi tên THEN TortoiseSVN đổi tên.), Ngược lại nó đã bị phức tạp, như TSVN tạo mới thư mục/gói và đánh dấu cũ để xóa ... Vì vậy, bạn không thể đổi tên cho Eclipse trừ khi bạn đặt gói cũ ở một nơi khác trong thời gian chờ đợi để ngăn chặn mất thư mục .svn, v.v ... Không giống như một tốt ý tưởng để đi xa hơn với phương pháp này. (Lưu ý cho chính mình: đừng quên đánh dấu vào hộp kiểm để đổi tên gói đệ quy!)
- Lưu ý ở bước 14: Đã làm việc! Chúng ta có thể thấy các phiên bản trước; tất cả những gì chúng ta phải làm là bảo không được sao chép/di chuyển và không sao cả. Sau khi hoàn nguyên về phiên bản trước khi đổi tên, tên gói không quay trở lại tên tốt mặc dù, có lẽ việc tái cấu trúc lại nó sẽ làm điều đó.
- Lưu ý cuối cùng: Tôi rất ngạc nhiên khi phải thực hiện các bước quan trọng theo thứ tự ngược lại. Để thực hiện điều đó ngay giữa lần đổi tên gói đầu tiên này, tôi đã phải khôi phục một số thay đổi TSVN và thủ công, đúc một chút nghi ngờ về bản chất lặp lại của kết quả chính xác của quy trình này. Tôi sẽ phải làm một bài kiểm tra thứ hai để xác nhận tính hợp lệ của nó. Tóm lại: có vẻ tốt, nhưng cần thử nghiệm thêm.
Lý do chính đáng để không làm là sẽ là số lượng công việc tốt (kể cả thử nghiệm) không có lợi ích. Nếu bạn nghĩ ai đó sẽ bắt đầu sản xuất thư viện trong không gian com.oldname sẽ va chạm với bạn, nó có thể đáng giá, nhưng toàn bộ ý tưởng về tiền tố miền là để đảm bảo tính duy nhất, không thỏa mãn dân gian tiếp thị. – msw
Tôi phải thừa nhận đó là một điểm rất tốt ... – Joanis
@Don Kirby & @Karussell: Tôi sẽ cố gắng chạy thử nghiệm hôm nay hoặc ngày mai và sẽ đưa ra phản hồi về điều đó tại đây. – Joanis