This is an old revision of the document!
Description
The VCS should support atomic commits. This means that if a committer wishes to commit n files at once, either the commits to all n files succeed, or they all fail.
It should be impossible for a commit designed to affect multiple files only affect a subset of those files.
This will remove the race condition that sometimes occurs when users (or the tinderbox) update the source tree in the middle of a lengthy commit, and retrieve an inconsistent copy of the tree.
Note: this will not prevent developers from creating inconsistent copies of the tree, by, eg., committing a single logical change as two separate changes.
Current Implementation
CVS does not implement atomic commits. The closest we currently get is the work carried out by log_accum.pl, which attempts to generate only one log message per change.
SVN Implementation
Atomic commits are fully supported by Subversion. A single commit either succeeds or fails.