summaryrefslogtreecommitdiffstats
path: root/doc/dev/developer_guide/merging.rst
blob: 36e10fc8440b3c234f646ca0b0e8d2b1a35c63b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
.. _merging:

Commit merging:  scope and cadence
==================================

Commits are merged into branches according to criteria specific to each phase
of the Ceph release lifecycle. This chapter codifies these criteria.

Development releases (i.e. x.0.z)
---------------------------------

What ?
^^^^^^

* Features
* Bug fixes

Where ?
^^^^^^^

Features are merged to the *main* branch. Bug fixes should be merged to the
corresponding named branch (e.g. *nautilus* for 14.0.z, *pacific* for 16.0.z,
etc.). However, this is not mandatory - bug fixes and documentation
enhancements can be merged to the *main* branch as well, since the *main*
branch is itself occasionally merged to the named branch during the development
releases phase. In either case, if a bug fix is important it can also be
flagged for backport to one or more previous stable releases.

When ?
^^^^^^

After each stable release, candidate branches for previous releases enter
phase 2 (see below).  For example: the *jewel* named branch was created when
the *infernalis* release candidates entered phase 2. From this point on,
*main* was no longer associated with *infernalis*. After he named branch of
the next stable release is created, *main* will be occasionally merged into
it.

Branch merges
^^^^^^^^^^^^^

* The latest stable release branch is merged periodically into main.
* The main branch is merged periodically into the branch of the stable release.
* The main is merged into the stable release branch
  immediately after each development (x.0.z) release.

Stable release candidates (i.e. x.1.z) phase 1
----------------------------------------------

What ?
^^^^^^

* Bug fixes only

Where ?
^^^^^^^

The stable release branch (e.g. *jewel* for 10.0.z, *luminous*
for 12.0.z, etc.) or *main*.  Bug fixes should be merged to the named
branch corresponding to the stable release candidate (e.g. *jewel* for
10.1.z) or to *main*. During this phase, all commits to *main* will be
merged to the named branch, and vice versa. In other words, it makes
no difference whether a commit is merged to the named branch or to
*main* - it will make it into the next release candidate either way.

When ?
^^^^^^

After the first stable release candidate is published, i.e. after the
x.1.0 tag is set in the release branch.

Branch merges
^^^^^^^^^^^^^

* The stable release branch is merged periodically into *main*.
* The *main* branch is merged periodically into the stable release branch.
* The *main* branch is merged into the stable release branch
  immediately after each x.1.z release candidate.

Stable release candidates (i.e. x.1.z) phase 2
----------------------------------------------

What ?
^^^^^^

* Bug fixes only

Where ?
^^^^^^^

The stable release branch (e.g. *mimic* for 13.0.z, *octopus* for 15.0.z
,etc.). During this phase, all commits to the named branch will be merged into
*main*. Cherry-picking to the named branch during release candidate phase 2
is performed manually since the official backporting process begins only when
the release is pronounced "stable".

When ?
^^^^^^

After Sage Weil announces that it is time for phase 2 to happen.

Branch merges
^^^^^^^^^^^^^

* The stable release branch is occasionally merged into main.

Stable releases (i.e. x.2.z)
----------------------------

What ?
^^^^^^

* Bug fixes
* Features are sometime accepted
* Commits should be cherry-picked from *main* when possible
* Commits that are not cherry-picked from *main* must pertain to a bug unique to
  the stable release
* See also the `backport HOWTO`_ document

.. _`backport HOWTO`:
  http://tracker.ceph.com/projects/ceph-releases/wiki/HOWTO#HOWTO

Where ?
^^^^^^^

The stable release branch (*hammer* for 0.94.x, *infernalis* for 9.2.x,
etc.)

When ?
^^^^^^

After the stable release is published, i.e. after the "vx.2.0" tag is set in
the release branch.

Branch merges
^^^^^^^^^^^^^

Never