# Information pertaining to Chrome OS releases.

[BRANCH]
# This part reflects the branch tagging history of Chrome OS builds. While this
# is closely related to the actual tree branching history, it may be that the
# builders' tag is lagging behind the actual branchpoint, due to the way our
# release process works. If this is the case, then the discrepancy will be noted
# in the comments.
#
# Option past_branches defines the list of known past branchpoints. Individual
# options with a bp_ prefix define branchpoints out of this list (option names
# are case-insensitive). Option next_branch is the name of the next branch to be
# cut, or equivalently the branch tag attached to most current builds.
branch_points: R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22,
  R23, R24, R25, R26
bp_r10: 0.10.156.0
bp_r11: 0.11.257.0
bp_r12: 0.12.433.0
bp_r13: 0.13.587.0
bp_r14: 0.14.811.0
bp_r15: 1011.0.0
bp_r16: 1193.0.0
bp_r17: 1412.0.0
bp_r18: 1660.0.0
# R19 actual branchpoint is 2046.0.0
bp_r19: 2047.0.0
# Note that the builders have produced R21 tagged artifacts beginning 2266.0.0
# for some unknown reasons, we'll ignore.
bp_r20: 2268.0.0
# R21 actual branchpoint is 2465.0.0
bp_r21: 2468.0.0
# R22 actual branchpoint is 2723.0.0
bp_r22: 2724.0.0
# R23 actual branchpoint is 2913.0.0
bp_r23: 2915.0.0
# R24 is not a real branchpoint, since the branch was skipped. The first
# Chrome OS release that had Chrome M25 in it is 3123.0.0.
bp_r24: 3125.0.0
# R25 actual branchpoint is 3428.0.0
bp_r25: 3435.0.0
bp_r26: 3701.0.0
next_branch: R27
