Theory
Theory: The Change is the Object, Not the Branch
Gerrit stores a change with a Change-Id, patch sets, and an approval predicate. Branches are an output of submit, not the collaboration primitive.
Invariants
- Each push of the same Change-Id is a new patch set (new Git commits).
- Submit is a server-side integrate (merge/rebase/cherry-pick) after labels.
- Android/Chromium scale is why this model exists.
refs/for/main → change 123 patch set 3
labels Code-Review+2 Verified+1 → submit → main
What can break
- Treating Gerrit like GitHub PRs (one branch per feature forever).
How to read this chapter
Model, Change-Ids, CI, ops, practice, lab, when it fits.