CVS detects only textual conflicts, but conflict resolution is
concerned with keeping the project as a whole logically consistent.
Therefore, conflict resolution sometimes involves changing files
other than the one CVS complained about.
For example, if one developer adds a parameter to a function
definition, it may be necessary for all the calls to that function to
be modified to pass the additional parameter. This is a logical
conflict, so its detection and resolution is the job of the
developers (with support from tools like compilers and debuggers);
CVS won't notice the problem.
In any merge situation, whether or not there was a conflict, the
second developer to commit will often want to retest the resulting
version of the project because it has changed since the original
commit. Once it passes the test, the developer will need to recommit
the file.