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).