blob: 28bd0fb2be6a9ed63d94413a585aef20d465b3df [file] [log] [blame]
#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.