Creating a New Merge Tree

This article is obsolete. We don't use bzr anymore. This howto needs to be rewritten to explain how to create a merge tree in git.

Merge tree in the context of this HOWTO is a tree created specifically to simplify merges of third-party packages into MariaDB. WIth a merge tree there's a clear separation between upstream changes and our changes and in most cases bzr can do the merges automatically.

Here's how I created a merge tree for pcre:

  • prerequisites: we already have pcre in the MariaDB tree, together with our changes (otherwise one can trivially create a bzr repository out of source pcre tarball).

  • create an empty repository:

mkdir pcre
cd pcre
bzr init
  • download pcre source tarball of the same version that we have in the tree — pcre-8.34.tar.bz2

  • unpack it in the same place where the files are in the source tree:

tar xf ~/pcre-8.34.tar.bz2
mv pcre-8.34 pcre
  • Add files to the repository with the same file-ids as in the MariaDB tree!

bzr add --file-ids-from ~/Abk/mysql/10.0
  • All done. Commit and push

bzr commit -m pcre-8.34
bzr push --remember lp:~maria-captains/maria/pcre-mergetree
  • Now null-merge that into your MariaDB tree. Note, that for the initial merge you need to specify the revision range 0..1

cd ~/Abk/mysql/10.0
bzr merge -r 0..1 ~/mergetrees/pcre/
  • Remove pcre files that shouldn't be in MariaDB tree, revert all changes that came from pcre (remember — it's a null-merge, pcre-8.34 is already in MariaDB tree), rename files in place as needed, resolve conflicts:

bzr rm `bzr added`
bzr revert --no-backup `bzr modified`
bzr resolve pcre
  • Verify that the tree is unchanged and commit:

bzr status
bzr commit -m 'pcre-8.34 mergetree initial merge'
  • Congratulations, your new merge tree is ready!

Now see Merging with a merge tree.

This page is licensed: CC BY-SA / Gnu FDL

Last updated

Was this helpful?