#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. Спасибо за отзыв, хотя я бы побоялся связываться с репозиторием на самом сервере.