7.2 Removing files
Directories change. New files are added, and old files
disappear. Still, you want to be able to retrieve an
exact copy of old releases.
Here is what you can do to remove a file,
but remain able to retrieve old revisions:
-
Make sure that you have not made any uncommitted
modifications to the file. See section Viewing differences,
for one way to do that. You can also use the
status
or update
command. If you remove
the file without committing your changes, you will of
course not be able to retrieve the file as it was
immediately before you deleted it.
-
Remove the file from your working copy of the directory.
You can for instance use
rm
.
-
Use `cvs remove filename' to tell CVS that
you really want to delete the file.
-
Use `cvs commit filename' to actually
perform the removal of the file from the repository.
When you commit the removal of the file, CVS
records the fact that the file no longer exists. It is
possible for a file to exist on only some branches and
not on others, or to re-add another file with the same
name later. CVS will correctly create or not create
the file, based on the `-r' and `-D' options
specified to checkout
or update
.
- Command: cvs remove [options] files …
Schedule file(s) to be removed from the repository
(files which have not already been removed from the
working directory are not processed). This command
does not actually remove the file from the repository
until you commit the removal. For a full list of
options, see Quick reference to CVS commands.
Here is an example of removing several files:
| $ cd test
$ rm *.c
$ cvs remove
cvs remove: Removing .
cvs remove: scheduling a.c for removal
cvs remove: scheduling b.c for removal
cvs remove: use 'cvs commit' to remove these files permanently
$ cvs ci -m "Removed unneeded files"
cvs commit: Examining .
cvs commit: Committing .
|
As a convenience you can remove the file and cvs
remove
it in one step, by specifying the `-f'
option. For example, the above example could also be
done like this:
| $ cd test
$ cvs remove -f *.c
cvs remove: scheduling a.c for removal
cvs remove: scheduling b.c for removal
cvs remove: use 'cvs commit' to remove these files permanently
$ cvs ci -m "Removed unneeded files"
cvs commit: Examining .
cvs commit: Committing .
|
If you execute remove
for a file, and then
change your mind before you commit, you can undo the
remove
with an add
command.
| $ ls
CVS ja.h oj.c
$ rm oj.c
$ cvs remove oj.c
cvs remove: scheduling oj.c for removal
cvs remove: use 'cvs commit' to remove this file permanently
$ cvs add oj.c
U oj.c
cvs add: oj.c, version 1.1.1.1, resurrected
|
If you realize your mistake before you run the
remove
command you can use update
to
resurrect the file:
| $ rm oj.c
$ cvs update oj.c
cvs update: warning: oj.c was lost
U oj.c
|
When you remove a file it is removed only on the branch
which you are working on (see section Branching and merging). You can
later merge the removals to another branch if you want
(see section Merging can add or remove files).