Компания, над которой я работаю, запускается, и они изменили свое название в процессе. Поэтому мы по-прежнему используем имя пакета com.oldname, потому что боимся сломать историю изменений файла или ссылки на родословную между версиями или что бы мы ни сломали (я не думаю, что я использую правильные условия, но вы получаете концепцию).
Мы используем: Eclipse, TortoiseSVN, Subversion
Я нашел где-нибудь, что я должен сделать это несколькими шагами, чтобы предотвратить несогласованность между содержимым .svn папок и имен пакетов в java файлах:
- Сначала используйте TortoiseSVN, чтобы переименовать каталог, обновив каталоги .svn.
- Затем вручную переименуйте каталог обратно в исходное имя.
- Чтобы, наконец, использовать Eclipse для переименования пакетов (refactor) на новое имя, обновление java файлов.
Мне кажется, что мне хорошо, но мне нужно знать, будет ли происхождение и история и все остальное быть последовательными и хорошо работать.
У меня нет ключей к этому серверу, поэтому я не спешу делать резервные копии вещей и попробовать одну или две вещи. Я хотел бы найти хорошую причину, чтобы не делать этого, или способ сделать это, который работает.
Благодарим вас за помощь,
М. Joanis
Тест переименования пакетов
Процедура:
- Создайте новый пакет com.oldname.test.renametest.subpackage.
-
Добавить новый класс под renamestest с именем RenameTest0.java и содержащий:
class RenameTest0 { public RenameTest0() { showMessage(); new RenameTest1(); } public static void showMessage() { System.out.println("RenameTest0!"); } public static void main(String[] args) { new RenameTest0(); } }
-
Добавить новый класс под renametest.subpackage, содержащий:
class RenameTest1 { public RenameTest1() { showMessage(); RenameTest0.showMessage(); } public static void showMessage() { System.out.println("RenameTest1!"); } }
-
Проверьте, что RenameTest0 работает нормально.
- Commit.
- Измените сообщения обоих классов.
- Commit.
- Снова измените сообщение одного класса и зафиксируйте (просто создав некоторую историю).
- Применить процедуру, предложенную выше (три шага исходного сообщения) для переименования пакета renametest в testrename.
- Commit.
- Тестирование.
- Изменить сообщения еще раз и проверить.
- Commit.
- Попробуйте вернуться к версии, когда оба сообщения были изменены одновременно в первый раз.
- Если все сработало до этого момента, это выглядит хорошо, нет?
Результат теста:
- Примечание на шаге 9: Придется сделать это в обратном порядке (Eclipse переименовать THEN TortoiseSVN переименовать.), иначе это осложнялось, поскольку TSVN создавал новую папку/пакет и маркировал старый для удаления... Итак, вы не может переименовываться для Eclipse, если вы не ставите старый пакет где-то еще, чтобы предотвратить потерю папок .svn и т.д. и т.д. Не было хорошей идеей пойти дальше с этим методом. (Обратите внимание на себя: не забудьте поставить галочку для переименования рекурсивного пакета!)
- Примечание на шаге 14: Работаем! Мы можем видеть предыдущие версии; все, что нам нужно сделать, это сказать, чтобы не ломаться на копирование/перемещение, и все в порядке. Вернувшись к версии перед переименованием, имена пакетов не вернутся к хорошему имени, хотя, возможно, что рефакторинг он снова сделает.
- Конечная нота: я был удивлен, что нужно сделать критические шаги в обратном порядке. Чтобы сделать это прямо в середине этого первого переименования пакета, попробуйте, я должен был отбросить некоторые TSVN и ручные модификации, слегка усомнившись в повторяемости характера точных результатов этой процедуры. Мне нужно сделать второй тест, чтобы подтвердить его достоверность. Подводя итог: он выглядит хорошо, но нуждается в дальнейшем тестировании.