Go to the first, previous, next, last section, table of contents.

# Removing files from a module

Modules change. New files are added, and old files disappear. Still, you want to be able to retrieve an exact copy of old releases of the module.

Here is what you can do to remove a file from a module, 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 module. 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 [`-lR`] 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. The ``-R'` option (the default) specifies that it will recurse into subdirectories; ``-l'` specifies that it will not.

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 .

If you change your mind you can easily resurrect the file before you commit it, using the `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 added only on the branch which you are working on (see section Branches). You can later merge the additions to another branch if you want (see section Merging can add or remove files).

Go to the first, previous, next, last section, table of contents.