"Reinstein, Shlomo" <[EMAIL PROTECTED]> writes:

> - User A checks-out the latest version of project p.
> - User B checks-out the latest version of project p.
> - User A changes one of the files in p, and commits his changes to the
> repository.
> - User B changes one of the files in p (not the same file that user A
> changed).
> - User B commits his changes to p, without first updating his working copy.
> Against all expectations, user B succeeds to commit even though his working
> copy is not up to date, leading to an unstable latest version of the project
> in the repository.

I believe that this behavior is intentional - CVS places on the
programmer responsibility for knowing which files must remain in some
consistent state in committed revisions of the project.

The problem with CVS attempting to prevent this situation manually is
that CVS, which in its defense knows very little about the meaning of
your project's file's organization, does not know which files need to
be updated before allowing user B to commit.  In our project, for
example, it would be sufficient before committing this_module.sql to
make sure that this_module.test.py (its test suite) was up-to-date as
well.  In another project CVS might need to check that the entire
current working directory were up-to-date before committing; and in
your case perhaps the parent directory and its sub-directories need to
become involved as well.

Instead, all of this is probably best done with a simple CVS that
knows only about updating and committing things, and developers who
supplement CVS's default behavior with scripts that support their
project's correctness.

-- 
Brandon Craig Rhodes                         http://www.rhodesmill.org/brandon
Georgia Tech                                            [EMAIL PROTECTED]


_______________________________________________
Info-cvs mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/info-cvs

Reply via email to