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

Опубликовано mensh - пт, 11/07/2008 - 04:25

Для того, чтобы удалить какой-либо файл из репозитория CVS, необходимо удалить этот файл из песочницы:

oleg@localhost:~/sandbox/linuxcookbook:$ \
> rm content/manpagesprint.html
rm: удалить обычный файл `content/manpagesprint.html`? y

Затем следует выполнить команду remove:

oleg@localhost:~/sandbox/linuxcookbook:$ \
> cvs remove content/manpagesprint.html
cvs remove: scheduling `content/manpagesprint.html` for removal
cvs remove: use `cvs commit` to remove this file permanently

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

oleg@localhost:~/sandbox/linuxcookbook:$ \
> cvs commit -m `Deleting file` content/manpagesprint.html
Removing content/manpagesprint.html;
/home/oleg/cvsroot/linuxcookbook/content/manpagesprint.html,v <-- manpagesprint.html
new revision: delete; previous revision: 1.1.1.1
done

Следующая команда показывает место расположения удаленного файла:

oleg@localhost:~:$ ls -l ~/cvsroot/linuxcookbook/content/Attic/
итого 4
-r--r--r-- 1 oleg users 3621 2008-11-06 13:58 manpagesprint.html,v

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

oleg@localhost:~/sandbox/linuxcookbook:$ \
> cvs remove -f content/manpagesprint.html

Каталоги невозможно удалить так, как удаляются файлы. Для предотвращения копирования пустых каталогов в песочницу в командах update и checkout следует использовать ключ -P.

Следует помнить, что CVS никогда ничего не удаляет полностью. Основной целью ее является поддержание полной истории проекта.