InnoDB Revision History
By Calvin Sun on Sep 19, 2010
Note: this article was originally published on http://blogs.innodb.com on Sept 19, 2009 by Vasil Dimov.
This is a brief overview of the history of InnoDB with respect to the Version Control Systems (VCS) that were used for developing. It could be useful to people who want to trace back in time to find the origins of bugs or features.
InnoDB was born in the mid 1990s when Heikki Tuuri started developing this masterpiece. Heikki was a lone developer at that time and he did not use any VCS. There is no InnoDB revision history before 2001.
2001 – 2005
Then in 2001 InnoDB was imported into MySQL’s BitKeeper repository and development continued, recording the history there.
2005 – 2010
Later on in Oct 2005 when Oracle acquired Innobase, InnoDB developers had to move away from MySQL’s BitKeeper repository and Subversion was chosen for InnoDB development. The latest sources from BitKeeper were imported into SVN without preserving the history and Innobase started sending snapshots of InnoDB to MySQL. In other words – InnoDB devs committed changesets into SVN and then batches of those changesets were sent to MySQL. But those batches were applied as a single changeset in BitKeeper with a message like “Apply InnoDB snapshot XYZ” which made the revision history of InnoDB in BitKeeper after Oct 2005 meaningless.
In the meantime MySQL switched from BitKeeper to Bazaar, preserving all the history that BitKeeper had. This did not affect InnoDB development and revision history, except that Bazaar was easier to use than the free and limited BitKeeper client. The snapshots thing continued.
To summarize: until early 2010 InnoDB history was split in two – the before 2005 part was in Bazaar and after 2005 part was in Subversion.
2010 – present
In Mar 2010, after Oracle acquired Sun and MySQL, InnoDB development moved into Bazaar. We wanted to keep the precious history from SVN, but it was not possible to retrospectively swap the 2005-2010 history in Bazaar which contained changesets like “Apply InnoDB snapshot XYZ” with the meaningful history from Subversion. Instead, the InnoDB directory in the MySQL source tree was deleted and all revisions from SVN were applied one by one on top of the empty directory.
This way commands like “bzr blame” and “bzr log” show the relevant bits from the SVN history, up to 2005. If one wants to dive before 2005 he must branch the MySQL source as it was before the SVN import (e.g. bzr branch -rdate:2010-03-01). Branching the pre-SVN-import tree will give access to the 2001-2005 real history and 2005-2010 “apply snapshot” history.