#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.

= 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 =

== Pulling from origin ==
{{{git pull --no-rebase --no-commit}}}

Without the --no-commit flag, a pull operation that requires a commit will get an auto-created commit with an auto-generated log message like "Merge branch page-fix". Because our branch names are ephemeral we suppress the auto-created commit so that we may give any merge commit a message that describes the substance of what is being merged.

== Pushing commits to a branch for review ==
{{{git push origin <hex string of commit to be reviewed>:<review branch name>}}}

== Pushing reviewed commits to master ==
{{{git push origin <latest reviewed commit hex string, not branch name or other alias>:master}}}

This will either push your specific reviewed commits to master or fail as non-fast-forward (in which case you'll have to merge and undergo further review).

= Rebase =

*Do not rebase.* Rebases cause us to lose review history and chronological ordering of our work. A falsely 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.

= Exceptions =

Commits made as part of the release process ("Set new Melange version number...") are exempt and may be made on master. They should still be reviewed when convenient, though.