This page describes how to do Ubuntu merges, i.e. how to update Ubuntu packaging with the newest changes from Debian.

Manual steps

The only functional difference between Debian and Ubuntu is that the Ubuntu packages can't depend on libmecab, as the package is in universe in Ubuntu while MySQL is in main.

# Make a new branch based on debian/master
git checkout mysql-5.7/debian/master
git checkout -b mysql-5.7/ubuntu/new

# Tag old debian merge point (where the two branches diverge)
git tag old/debian <commit>

# Add the diff commit. This should be the «Revert "Build with libmecab-dev"» commit
git cherry-pick 2d8c1f1

# Merge changelogs together
git-merge-changelogs old/debian mysql-5.7/ubuntu/devel HEAD
git commit -m'merge-changelogs' debian/changelog

# Edit debian/changelog with the new changelog entry
git commit -m'Changelog for <version>' debian/changlog

# Update maintainer field to point to Ubuntu
update-maintainer
git commit -m'update-maintainer' debian/control

#Final merge commit to keep /ubuntu/devel fast-forwarding
git merge -s ours mysql-5.7/ubuntu/devel

Based on Ubuntu git workflow

The below is a quick replication of the workflow used by Ubuntu, described at https://wiki.ubuntu.com/UbuntuDevelopment/Merging/GitWorkflow

However, the Ubuntu diff for MySQL is simple, so the below is more complicated (and more likely to go wrong) than we really need. Keeping it for possible future use.

Set up tags:

git tag new/debian alioth/mysql-5.7/debian/master git tag tag old/ubuntu alioth/mysql-5.7/ubuntu/devel git tag old/debian <divergence point>

Make the simplest thing ready for rebase:

git checkout old/ubuntu git rebase -i old/debian # remove changelog commits to prevent merge conflicts during future rebase

Also, use rebase -i to squash down any back and forthing (we call this "logical" in our workflow). This is most useful for future merges.

Rebase onto newest Debian

git rebase --onto new/debian old/debian git-merge-changelogs old/debian old/ubuntu HEAD # this updates debian/changelog git commit -mmerge-changelogs debian/changelog

# Write new changelog entry

git commit -m'Changelog for <version>' debian/changlog # or commit message as you wish update-maintainer git commit -m'update-maintainer' debian/control

Final merge commit to keep alioth/mysql-5.7/ubuntu/devel fast-forwarding

git merge -s ours old/ubuntu

git checkout -b my-merge git push ... # for review

Finally, tag the release as needed (but probably best to wait until Ubuntu upload before pushing in case changes were needed).

When uploading, push to alioth/mysql-5.7/ubuntu/devel first. Once uploaded, push the release tag.