Как рекурсивно перемещать пакет между исходными папками в Eclipse и обновлять CVS?

#java #eclipse #version-control #cvs

#java #eclipse #контроль версий #cvs

Вопрос:

Итак, мне нужно было переместить большой пакет из папки по умолчанию src в другую вызываемую исходную папку test . Я сделал это, просто переместив каталог в файловой системе, а затем обновив Eclipse. Что касается Eclipse, все прошло нормально.

Однако проблема в том, что копирование не изменило метаданные CVS, которые были в этих папках. Теперь каждый раз, когда я синхронизируюсь с CVS, он будет переключаться между желанием обновить или удалить все файлы в пакете.

Как рекурсивно перемещать пакет, не вызывая проблем CVS?Опять же, это не влияет на имена пакетов, только на используемую исходную папку.

Ответ №1:

Я много раз перемещал каталог в Eclipse без проблем. Выполните перемещение внутри самого Eclipse (не во внешней файловой системе), и плагин CVS будет отслеживать все перемещения, поэтому при следующей синхронизации с вашим репозиторием он покажет, какие вещи были удалены (отмечены знаками минус в графическом интерфейсе) и что было добавлено (отмечено знакомзнаки плюс в графическом интерфейсе). Обратите внимание, что вы потеряете свою историю в графическом интерфейсе Eclipse для перемещаемых файлов, которая вернется к версии v1.1.

Комментарии:

1. Как в Eclipse перемещать пакет (и все подпакеты) между исходными папками?

2. В обозревателе проектов щелкните правой кнопкой мыши на пакете, затем выберите Рефакторинг-Переместить. В диалоговом окне перемещения выберите новую исходную папку и нажмите OK. Eclipse определяет все изменения, предупреждает вас о любых проблемах и выполняет все остальное.

3. Однако я не думаю, что это рекурсивно перемещает подпакеты.

4. Вы можете выбрать столько пакетов и подпакетов, сколько захотите, затем все будут перемещены

5. Вы должны использовать плоское представление пакета (не иерархическое, в этом весь фокус), чтобы выбрать все подпакеты. Чем перемещать или копировать-вставлять в новую исходную папку.

Ответ №2:

Хорошо, похоже, что все, что мне нужно было сделать, это вручную переместить папку пакета, а затем выполнить

 find . -name CVS -type d | xargs rm -rf
  

в папке, чтобы удалить всю информацию CVS перед обновлением и синхронизацией с CVS.

Комментарии:

1. Я думаю, это лучшее, что вы можете сделать в CVS. Для особо параноидальных вы можете добавить in -type d в команду find .

2. На самом деле, переосмысливая это, я полагаю, вы могли бы также переместить каталог на сервере, что сохранит историю для отдельных файлов.

3. Спасибо за отзыв, хотя я бы побоялся связываться с репозиторием на самом сервере.