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:

  1. 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.
  2. Push your line of development to a branch in the origin repository.
  3. Ask another Melange engineer to review every unreviewed commit in your branch.
  4. Make changes and re-push to your branch, and secure re-review as necessary.
  5. 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.
  6. 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.