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

« Previous - Version 9/22 (diff) - Next » - Current version
Loic Dachary, 07/10/2015 07:20 AM

After the tests successfully run on the integration branch:

Get approval from the lead

  • List the pull requests that have been merged in the integration branch with something like:
    $ git log --oneline --merges ceph/giant..ceph/giant-backports
    538d012 Merge 4214: osd/ 456: FAILED assert(m_seed < old_pg_num)
  • Assign pull requests that have been backported and tested without interaction with the original author to the lead because (s)he is the one deciding if the backport is good enough. Although a discussion with the lead could be engaged before testing, it is less work for a busy lead to review a backport that is known to pass integration tests. Ask to the lead if the pull request can be merged by adding a message to the pull request with a URL to the test results.
  • Wait for all such pull requests to be approved.

Merge a pull request

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:

  • the backport was done by the original developer of the commit
  • the backport was approved by the lead (see above)

Merging the pull requests goes like this:

  • for each pull request merged in the integration branch
  • go to the github web interface
  • click on the "Merge button"
  • add the "Reviewed-by:" field to the input box
  • when all pull requests are merged git log --no-merges $release-backports ^$release must be empty (i.e. the integration branch must have nothing left except diverging merges because all cherry-picked commits are now found in the $release branch).
  • the $release-backports branch is reset to the $release branch to make it clear that it has been merged (git reset --hard ceph/$release)

Resolving the matching issue

For each pull request that is merged:

  • go to the corresponding issue that should be listed as a link in the pull request comment
  • change the status of the issue to Resolved

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.