Project

General

Profile

HOWTO merge commits from the integration branch » History » Version 22

Loïc Dachary, 11/30/2015 04:16 PM

1 2 Loïc Dachary
After the [[HOWTO run integration and upgrade tests|tests successfully]] run on the [[HOWTO populate the integration branch|integration branch]]:
2 2 Loïc Dachary
3 12 Loïc Dachary
h3. Get approval on a backport
4 1 Loïc Dachary
5 12 Loïc Dachary
The backports that were done by someone in the *stable releases* team need to be approved by a developer or a lead, even after successfully passing the relevant teuthology suite. Although a discussion with the developer or the lead could be engaged before testing, it is less work for a busy developer or lead to review a backport that is known to pass integration tests. 
6 12 Loïc Dachary
7 20 Loïc Dachary
The upgrade suite must always pass before asking for approval because it may reveal problems related to rados, CephFS, rgw or rbd.
8 20 Loïc Dachary
9 6 Loïc Dachary
* List the pull requests that have been merged in the integration branch with something like:
10 6 Loïc Dachary
<pre>
11 1 Loïc Dachary
$ git log --oneline --merges ceph/giant..ceph/giant-backports
12 1 Loïc Dachary
538d012 Merge 4214: osd/osd_types.cc: 456: FAILED assert(m_seed < old_pg_num)
13 1 Loïc Dachary
</pre>
14 12 Loïc Dachary
* For each commit in each pull request, lookup the person who merged the backported commit in master
15 12 Loïc Dachary
** follow the link on the commit hash of the *cherry-pick from* part of the commit message of the backport
16 22 Loïc Dachary
** if the commit starts with something like *https://github.com/Abhishekvrshny/ceph* replace it with *https://github.com/ceph/ceph* otherwise the link to the pull request won't show
17 12 Loïc Dachary
** follow the link to the pull request that included this commit
18 12 Loïc Dachary
** the person who merged the pull request was responsible for merging this commit in master
19 12 Loïc Dachary
* If there are more than one person responsible for merging the commits of a given pull request, pick one (at random if there does not seem to be a reason to chose one rather than the other)
20 12 Loïc Dachary
* Ask the person responsible for merging the commits, via a comment in the pull request:
21 12 Loïc Dachary
<pre>
22 12 Loïc Dachary
@person this backport passed the XXX suite (URL to the pulpito page for the suite), do you think it can be merged ?
23 12 Loïc Dachary
</pre>
24 15 Nathan Cutler
** Keep in mind that if the responsible person is Josh Durgin, his position is as follows:
25 15 Nathan Cutler
<pre>
26 16 Nathan Cutler
Generally you can assume that for trivial backports, or ones with 
27 16 Nathan Cutler
just trivial conflicts, I'm fine with merging them after an rbd 
28 16 Nathan Cutler
suite run.
29 15 Nathan Cutler
</pre>
30 12 Loïc Dachary
* The person can either merge the pull request (her|him)self or add a comment like LGTM.
31 18 Loïc Dachary
* Assign the pull request to the person so that it shows up in (her|his) list of assigned pull requests.
32 14 Loïc Dachary
* If the person is unresponsive, the lead can be ping'ed instead.
33 2 Loïc Dachary
34 9 Loïc Dachary
h3. Merge a pull request
35 1 Loïc Dachary
36 9 Loïc Dachary
The backports from the integration branch can be merged (via github so that the pull requests are properly tagged as being merged) into the release branch if:
37 9 Loïc Dachary
38 9 Loïc Dachary
* the backport was done by the original developer of the commit
39 13 Loïc Dachary
* the backport was approved by the developer or the lead (see above)
40 9 Loïc Dachary
41 9 Loïc Dachary
Merging the pull requests goes like this:
42 9 Loïc Dachary
43 1 Loïc Dachary
* for each pull request merged in the integration branch
44 1 Loïc Dachary
* go to the github web interface
45 1 Loïc Dachary
* click on the "Merge button"
46 8 Loïc Dachary
* add the "Reviewed-by:" field to the input box
47 11 Loïc Dachary
* when all pull requests are merged **git log --format='%H %s' --graph ceph/$release..ceph/$release-backports** must not show any commit (i.e. the integration branch must have nothing left because all cherry-picked commits are now found in the $release branch).
48 1 Loïc Dachary
* the $release-backports branch is reset to the $release branch to make it clear that it has been merged (git reset --hard ceph/$release)
49 1 Loïc Dachary
50 9 Loïc Dachary
h3. Resolving the matching issue
51 9 Loïc Dachary
52 21 Loïc Dachary
"ceph-workbench":http://ceph-workbench.readthedocs.org/ <code>backport-set-release --git-remote ceph --git-directory $HOME/software/ceph/ceph ---github-token $github_token --redmine-key $redmine_key</code>
53 9 Loïc Dachary
54 9 Loïc Dachary
Note: Since the merge is not from the integration branch, the commit that has been tested won't match the SHA. This is inconvenient when trying to figure out if a mistake has been done. The content of the integration branch should be merged with a script instead of manually via the github web interface to avoid mistakes.