Удобно переместить класс в другой пакет в Eclipse без использования SVN - PullRequest
20 голосов
/ 07 января 2009

При перемещении файла из old.package to new.package я хочу, чтобы произошли две вещи:

  1. Обновите все ссылки на этот класс (во всех файлах проекта), чтобы использовать новый пакет
  2. svn move old/package/Foo.java new/package/Foo.java

Я использую подрывную деятельность в Eclipse Ganymede. Когда я просто перетаскиваю файл из одного пакета в другой, все ссылки обновляются, и файл перемещается в файловой системе. Но SVN не знает об этом, и поэтому команда svn move old/package/foo.java new/package/Foo.java не работает (очевидно), когда old/package/Foo.java не существует (потому что затмение уже переместило его).

Есть ли способ заставить eclipse выполнять рефакторинг, но использовать svn для перемещения файла в файловой системе? Я надеюсь, что я просто упускаю что-то очевидное: -)

Ответы [ 5 ]

16 голосов
/ 07 января 2009

Я использую Subclipse , и он поддерживает перемещение файлов между пакетами

3 голосов
/ 14 июля 2010

Я экспериментировал и думаю, что нашел способ:

1) Черепаха-перемещение файла с помощью контекстного меню, перетаскивания правой кнопкой мыши (или любым другим способом SVN).

2) Используйте файловую систему Windows, чтобы переместить ее обратно.

3) Перетащите файл в Eclipse, чтобы обновить все ссылки.

4) Фиксация - она ​​отображается как удаление / добавление, но сохраняет историю и изменяет ссылки на пакеты в одном коммите (сохраняя возможность сборки каждого коммита).

Старый вопрос, но я продолжаю к нему возвращаться, так что это моя документация!

1 голос
/ 07 января 2009

Юваль прав. Это звучит как (очень неудачно!) Недостаток в Subversive. (не имея опыта работы с Subversive, я не могу сказать наверняка) Subclipse определенно справляется с этим правильно, подключая правильные API в Eclipse.

0 голосов
/ 07 января 2009

Вы не можете сделать оба одновременно, потому что перемещение одних файлов недостаточно. Файлы должны быть изменены, чтобы ваш код снова мог быть скомпилирован. Так что сделайте рефакторинг с Eclipse и дайте Subclipse сделать свое волшебство (удалить старые файлы, добавить новые файлы) после переезда.

0 голосов
/ 07 января 2009

Если вы позволите Eclipse выполнить рефакторинг, то, несомненно, он внесет изменения в реальные файлы, которые SVN должен получить при фиксации корневого каталога? Я не думаю, что движение сократит его, хотя, SVN придется выяснить, что файл отсутствует в исходном каталоге, но заново добавить его из нового каталога. Это неприятная ситуация, я не знаю, какой из них лучший, я просто проведу рефакторинг, а затем передам рут лично, даже если это не будет ходом.

...