Ответ 1
Я использую Subclipse и поддерживает перенос файлов между пакетами
При перемещении файла из old.package to 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 уже переместил его).
Есть ли способ заставить eclipse выполнять рефакторинг, но используя svn для перемещения файла в файловой системе? Надеюсь, я просто пропустил что-то очевидное: -)
Я использую Subclipse и поддерживает перенос файлов между пакетами
Я экспериментировал и думаю, что нашел способ:
1) Черепаха - перемещайте файл, используя контекстное меню с щелчком правой кнопкой мыши (или любой другой метод SVN, который вы хотите).
2) Используйте файловую систему Windows, чтобы вернуть ее.
3) Перетащите файл в Eclipse, чтобы обновить все ссылки.
4) Commit - он показывает как delete/add, но сохраняет историю, и он меняет ссылки на пакеты в одном коммите (сохраняя каждую готовность сборки).
Старый вопрос, но я продолжаю возвращаться к нему, так что это моя документация!
Юваль правый. Это звучит как (очень неудачный!) Недостаток в Subversive. (не имея опыта работы с Subversive, я не могу сказать точно) Subclipse определенно справляется с этим правильно, подключаясь к правильным API-интерфейсам в Eclipse.
Вы не можете делать оба одновременно, потому что перемещать файлы в одиночку недостаточно. Файлы должны быть изменены для повторного компиляции кода. Так что рефакторинг с Eclipse и пусть Subclipse сделать свою магию (удалить старые файлы, добавить новые файлы) после перемещения.
Если вы разрешите Eclipse выполнять рефакторинг, то, конечно же, он внесет изменения в фактические файлы, которые SVN должен забрать при фиксации корневого каталога? Я не думаю, что какой-то шаг сократит его, хотя SVN придется подобрать тот файл, который отсутствует в его исходном каталоге, но повторно добавить его из нового каталога. Это липкая ситуация, я бы не знал, какой лучший метод, я бы просто сделал рефакторинг, а затем лично передал корень, хотя это не было бы шагом.