change = complete feature
or
change = bug-fix
each change should add something usable
change = complete feature
or
change = bug-fix
⇒ Have a releasable state after every change.
each change should focus on only one thing
Q: Why is this bad?
A:
push only changes that are ready
Q: Who wants to merge unfinished changes?
Q: Who wants to review unfinished changes?
A: It is unclear for reviewers
mark unfinished and experimental changes as [RFC] (Request For
Comments),
but tell reviewers which feedback you expect
Examples:
write good commit message
Q: Who wants to review this change?
write good commit message
Q: This one looks more interesting, doesn’t it?
write good commit message
explain the motivation for the change
Q: Why is this commit message bad?
A: No info about why this had to be disabled.
git blame gets less useful.
prefer small changes
Q: Who wants to review this change?
make big features as series of small changes
split refactoring from feature
reply to every comment
Better one developer invests time to polish a change
than n reviewers waste time on review.
review each change
Q: Looks good!?
review each change
Q: And now?
everyone should do reviews
follow reviews of others
cooperate to find best solution
mark optional comments as [optional]
comment on nits
try out changes
issue in merged code
Code Review Voting
do not self approve changes
review takes time
Being a good reviewer is a different qualification than being a good developer.
Code Review works!
automate verification
not everyone needs submit privileges
use text format for documentation
customize submit rules via Prolog
choose right submit type
do not version large binaries
find right granularity for the repositories
learn Git/Gerrit tooling and workflow