The correct import command cvs import cvs example example xyz start
PROJECT MANAGEMENT WITH CVS 43
version control systems physically prevent this with ”strong” file locking, but CVS allows it. In the case of a conflict, CVS will prevent the most recent modification from being committed to the repository, but instead will provide the developer with a reject file listing the source code lines in question. The developer must then merge his changes with the other developer’s changes by hand and then re-commit the file. This would obviously be a continuous hassle without a bit of coordination between developers; CVS does not replace communication and management. It is best to avoid conflicts in th first place, but sometimes they are inevitable.
Creating a CVS Module
The first step is to create a repository, if one does not already exist. A repository can host any number of modules, and it is common for software teams to use one central repository for all of their projects (this facilitates routine backups, among other things). To create a repository, set the CVSROOT environment variable to a suitable location and type cvs init. This will create the CVS repository directory and initialize several important control files. The location of CVSROOT is not especially important, but make sure that your account has write access to it. If a repository already exists, make sure the CVSROOT environment variable is set to the repository’s location.
Do not create a CVS repository in the same directory as a project you wish to add to the repository. This would result in an infinite loop. CVS is remarkably braindead about some things, but a useful tool nonetheless.
Now we need to import the initial set of source files to the repository. Assuming that we are in the project’s directory and that CVSROOT is set correctly, we use the command cvs import -m "Some descriptive comment" projname vendor label, where projname is the name of the project (“foobar” for now), vendor is the name of the organization responsible for the project (which doesn’t matter too much to us), and label is an indication of the software’s progress, such as initial or start. This command will copy the project’s files into the CVS repository under the given project name. The project is now controlled by CVS, and the original files may be safely deleted.
N example/main.c
N example/Makefile


