Компания, в которой я работаю, запускается, и в процессе они изменили свое название. Таким образом, мы по-прежнему используем имя пакета com.oldname, потому что мы боимся нарушить историю изменений файлов, или родственные связи между версиями, или что-то еще, что мы могли бы нарушить (я не думаю, что использую правильные термины, но вы понимаете концепцию ).
Мы используем: Eclipse, TortoiseSVN, Subversion
Я нашел где-то, что мне нужно сделать это в несколько этапов чтобы предотвратить несоответствие между содержимым папок .svn и именами пакетов в файлах java:
- Сначала используйте TortoiseSVN, чтобы переименовать каталог, обновив каталоги .svn.
- Затем вручную переименуйте каталог обратно в исходное имя.
- Чтобы, наконец, использовать Eclipse для переименования пакетов (рефакторинга) обратно на новое имя, обновив файлы java.
Мне это кажется хорошим, но мне нужно знать, будут ли по-прежнему согласованы и хорошо работают происхождение, история и все остальное.
У меня нет ключей к этому серверу, поэтому я не делаю в спешке резервные копии и пробую одну или две вещи. Я хотел бы придумать вескую причину не делать этого или способ, который работает.
Спасибо за помощь,
М. Джоанис
Тест на переименование пакета
Процедура:
- Создайте новый пакет com.oldname.test.renametest.subpackage.
Добавьте новый класс в renametest под названием 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 работает нормально.
- Совершить.
- Измените сообщения обоих классов.
- Совершить.
- Опять же, измените сообщение одного класса и выполните фиксацию (просто создав некоторую историю).
- Примените предложенную выше процедуру (три шага в исходном сообщении) для переименования пакета renametest в testrename.
- Совершить.
- Тестовый забег.
- Снова измените сообщения и проверьте.
- Совершить.
- Попробуйте откатиться к версии, когда оба сообщения были изменены одновременно в первый раз.
- Если до этого момента все работало нормально, все в порядке, не так ли?
Результат теста:
- Примечание к шагу 9: нужно было сделать это в обратном порядке (Eclipse переименовал ТОГДА в TortoiseSVN переименовать.), Иначе это усложнялось, поскольку TSVN создает новую папку / пакет и отмечает старую для удаления. .. Таким образом, вы не можете переименовать Eclipse, если пока не поместите старый пакет в другое место, чтобы предотвратить потерю папок .svn и т. Д. И т. Д. Не было хорошей идеей продолжать использовать этот метод. (На заметку: не забудьте поставить галочку для рекурсивного переименования пакетов!)
- Примечание к шагу 14: Работает! Мы видим предыдущие версии; все, что нам нужно сделать, это сказать не ломаться при копировании / перемещении, и все в порядке. После возврата к версии перед переименованием имена пакетов не возвращаются к хорошему имени, возможно, повторный рефакторинг сделает это.
- Конечное примечание: я был удивлен, когда мне пришлось проделывать важные шаги в обратном порядке. Чтобы сделать это прямо в середине этой первой попытки переименования пакета, мне пришлось откатить некоторые TSVN и ручные модификации, что немного усомнилось в повторяемости точных результатов этой процедуры. Мне нужно будет сделать второй тест, чтобы подтвердить его действительность. Подводя итог: выглядит неплохо, но требует дальнейшего тестирования.