Simple patches to fix bugs can be committed then reviewed. With a
commit-then-review process, the Committer is trusted to have a high
degree of confidence in the change.
Doubtful changes, new features, and large scale overhauls need to be
discussed before committing them into the repository. Any change that
affects the semantics of an existing API function, the size of the
program, configuration data formats, or other major areas must receive
consensus approval before being committed.
Related changes should be committed as a group, or very closely
together. Half complete projects should never be committed to the main
branch of a development repository. All code changes must be
successfully compiled on the developer's platform before being
committed.
The current source code tree for a subproject should be capable of
complete compilation at all times. However, it is sometimes impossible
for a developer on one platform to avoid breaking some other platform
when a change is committed. If it is anticipated that a given change
will break the build on some other platform, the committer must
indicate that in the commit message.
A committed change must be reversed if it is vetoed by one of the
voting members and the veto conditions cannot be immediately satisfied
by the equivalent of a "bug fix" commit. The veto must be rescinded
before the change can be included in any public release.