Moving files to a different directory or renaming them is not difficult, but some of the ways in which this works may be non-obvious. (Moving or renaming a directory is even harder. See section Moving and renaming directories).
The examples below assume that the file old is renamed to new.
The normal way to move a file is to copy old to new, and then issue the normal CVS commands to remove old from the repository, and add new to it. (Both old and new could contain relative paths, for example `foo/bar.c').
$ mv old new $ cvs remove old $ cvs add new $ cvs commit -m "Renamed old to new" old new
This is the simplest way to move a file, it is not
error-prone, and it preserves the history of what was
done. Note that to access the history of the file you
must specify the old or the new name, depending on what
portion of the history you are accessing. For example,
cvs log old
will give the log up until the
time of the rename.
When new is committed its revision numbers will start at 1.0 again, so if that bothers you, use the `-r rev' option to commit (see section commit options)
This method is more dangerous, since it involves moving files inside the repository. Read this entire section before trying it out!
$ cd $CVSROOT/module $ mv old,v new,v
Advantages:
Disadvantages:
This way also involves direct modifications to the repository. It is safe, but not without drawbacks.
# Copy the RCS file inside the repository $ cd $CVSROOT/module $ cp old,v new,v # Remove the old file $ cd ~/module $ rm old $ cvs remove old $ cvs commit old # Remove all tags from new $ cvs update new $ cvs log new # Remember the non-branch tag names $ cvs tag -d tag1 new $ cvs tag -d tag2 new ...
By removing the tags you will be able to check out old revisions of the module.
Advantages:
Disadvantages:
Go to the first, previous, next, last section, table of contents.