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