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.


Comments loading...
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.