Удобно переместить класс в другой пакет в Eclipse без использования SVN
Вопрос
При перемещении файла из old.package в new.package
я хочу, чтобы произошли две вещи:
svn move old / package / Foo.java new / package / Foo.java
Я использую Subversive в Eclipse Ganymede. Когда я просто перетаскиваю файл из одного пакета в другой, все ссылки обновляются, и файл перемещается в файловой системе. Но SVN не знает об этом, и поэтому команда svn move old / package / foo.java new / package / Foo.java
не работает (очевидно), когда old / package / Foo.java
не существует (потому что затмение уже переместило его).
Есть ли способ заставить eclipse выполнить рефакторинг, но использовать svn для перемещения файла в файловой системе? Надеюсь, я просто упускаю что-то очевидное: -)
Решение
Я использую Subclipse , и он поддерживает поддержку перемещения файлов между пакетами
Другие советы
Я экспериментировал и думаю, что нашел способ:
1) Черепаха - переместите файл, используя контекстное меню, перетащенное правой кнопкой мыши (или любой другой метод SVN, который вам нужен).
2) Используйте файловую систему Windows, чтобы переместить ее обратно.
3) Перетащите файл в Eclipse, чтобы обновить все ссылки.
4) Фиксация - отображается как удаление / добавление, но сохраняет историю и изменяет ссылки на пакеты в одном коммите (сохраняя каждый коммит встраиваемым).
Старый вопрос, но я продолжаю к нему возвращаться, так что это моя документация!
Юваль прав. Это звучит как (очень неудачно!) Недостаток в Subversive. (не имея опыта работы с Subversive, я не могу сказать наверняка) Subclipse определенно справляется с этим правильно, подключая нужные API в Eclipse.
Вы не можете сделать оба одновременно, потому что перемещение файлов само по себе недостаточно. Файлы должны быть изменены, чтобы ваш код снова мог быть скомпилирован. Так что сделайте рефакторинг с Eclipse и позвольте Subclipse сделать свое волшебство (удалить старые файлы, добавить новые файлы) после переезда.
Если вы позволите Eclipse выполнить рефакторинг, то, несомненно, он внесет изменения в реальные файлы, которые SVN должен получить при фиксации корневого каталога? Я не думаю, что движение сократит его, хотя, SVN придется выяснить, что файл отсутствует в исходном каталоге, но заново добавить его из нового каталога. Это неприятная ситуация, я бы не знал, какой метод лучше, я бы просто провел рефакторинг, а затем зафиксировал рут лично, хотя это и не было бы ходом.