#summary Procedure for Melange Code Review.
#labels Contents-Draft

= Requirements =

All commits and must be reviewed by at least one Melange engineer other than the author before migration to the master branch.

= Exceptions =

Commits made as part of the release process ("Set new Melange version number...") are exempt and may be made on master.

= Author Process =

When you feel that your current line of development is ready for review:
  # If master has advanced beyond where it was when you started your development, pull the current head of master and merge master's changes with yours.
  # Push your line of development to a branch in the origin repository.
  # Ask another Melange engineer to review every unreviewed commit in your branch.
  # Make changes and re-push to your branch, and secure re-review as necessary.
  # When every commit on your branch has been reviewed (positively), push the (reviewed) head commit of your development branch to master, taking care to make no additional changes.
  # Prune your development branch if it will see no further use.

= Sample Author Commands =

*TODO(nathaniel)* but the important one is {{{git push origin <commit hex string, not branch name>:master}}}, which will either push a specific reviewed commit to master or fail as non-fast-forward.

= Rebase =

*Do not rebase.* We lose review history and chronological ordering with rebases. Linear history just isn't worth it.

= Reviewer Process =
If a change looks good and needs no comment, just mark it positive and hit the "submit" button. This suppresses the per-commit email thread and cuts down on mailing list noise.