CVS only detects 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 about which CVS complained.
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 developer will need to recommit the file.