18.8. Удаление файлов из репозитария CVS

Проблема

Требуется удалить некоторые файлы из репозитария CVS.

Решение

Удалите файлы из «песочницы», затем выполните команду cvs remove:

$ rm badfile
$ cvs remove badfile
cvs remove: scheduling 'badfile' for removal
cvs remove: use 'cvs commit' to remove this file permanently

При следующем выполнении команды commit файл будет перемещён в специальный подкаталог с именем Attic. Тем самым сохраняется полная история всех операций с файлами и обеспечивается возможность восстановления файла, если позднее вы измените своё решение.

Удаление файла из «песочницы» и репозитария можно выполнить одной командой:

$ cvs remove -f badfile

Комментарий

В отличие от файлов, каталоги нельзя удалить так, как удаляются файлы. В этом случае используется ключ -P в командах update и checkout, чтобы предотвратить копирование пустых каталогов в «песочницу». Как правило, этот режим включается по умолчанию в файле ~/.cvsrc (см. раздел 18.15).

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

Команда cvs remove лишь планирует удаление файла, а не выполняет его мгновенно. Реальное удаление происходит только после команды cvs commit, что позволяет ещё раз убедиться в правильности действий перед окончательным исключением файла из рабочей копии.

Стоит помнить, что удаление файла с последующей фиксацией (commit) переносит его в подкаталог Attic. Этот подкаталог представляет собой своего рода архив, куда CVS отправляет удалённые файлы, сохраняя все их версии. Attic создаёт возможности для просмотра истории файла или его восстановления. Если вам когда-либо потребуется вернуть удалённый файл, вы можете использовать команду cvs update -j с указанием необходимых ревизий.

Для администраторов больших проектов важно следить за чистотой репозитория. Если файл больше не используется, его рекомендуется удалить из «песочницы» и репозитория, а не оставлять без использования, чтобы не создавать ненужные зависимости в проекте.

CVS — надёжная система для совместной работы над проектами, но требует грамотного управления и понимания принципов версионного контроля. Эти знания позволяют не только управлять файлами, но и обеспечивать контроль за каждой итерацией, поддерживая последовательность и целостность проекта.

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

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

См. также

Раздел 18.15; домашняя страница CVS (https://www.cvshome.org).