CVS is source control (very good source control). But it has a different set of working principles that most.
In a traditional source control, the file is locked as long as someone has it checked out. When you check it back in the lock is released. That is how RCS and SCCS work.
CVS is based on the concept of multiple concurrent developers. You don't put a lock on files when you check them out, because typically you have a copy of everything, not just a single file. When you check the file back in CVS attempts to merge your changes in. If it cannot (because others have check it back in since you have) it will let you know that it cannot check it back in and you need to manually reslove the issues.
Manually resolve the issues means that you have to look at your changes and the currently added changes and manually merge them. This would normally only happen if two different people were chaning the exact same line in the exact same file.
If you have a file, developer A checks it out and developer B checks it out. Then both do modifications. Then B sends his modifications before A, if the modifications of A and B are in two different parts of the file, CVS will automatically merge the two.
Only when the modifications collide then CVS will send the file back to A with the lines in question specifically marked, so developer A has to go to where the collision occured and what ever is needed to resolve it then sends it back to the repository with no problems.
AFAIK, CVS doesn't care who checked the files out. So it doesn't keep track of such a thing. CVS only cares about changes to the files. You can check the whole source tree from CVS and keep it for days. It doesn't mean that you are working on all the files.
It was designed by open source developers for open source developers. Anybody can come at any time and check everything out, try it, maybe make some changes and put them back to the repository.
Most of the changes your developers will be commiting will be bug fixes. So you don't want to bother your developers just because they want to submit a small change like an error check or an extra function call.
CVS is only for log keeping. Any other communications are done using mailing lists, forums, bug tracking system, .. etc.
Originally posted by brands When a person checks out some files, does CVS indicate the other developers that the files have been now worked on..??
Again, you do not typically check out a file, you check out an entire application. There are then commands within CVS to update your local copy with the files in the CVS repository (merging in any changes needed and deleting any obsolete files) and to check your updates back into the repository.
Originally posted by brands To what extent can the admin control the developers...like in terms of permissions and accessibility.
Typically total control. First of all, you can decide if you want to have anonymous access to the CVS repository. This means that you can get a copy of what's been put in. This is almost always given for Open Source projects, but it's up to you.
To check it, you typically need a user id and password. On the servers I've worked on this is done over a SSH connection.
Again, it will totally depend on if you are doing this on a private network or over the public internet.
Just do a google search on pserver. pserver is the server end of CVS. It's responsible for letting you get copies of the file and checking them back in.