How to you handle Revision Control for eZ Publish Projects?
An eZ publish project is made up of a number of elements that are stored either on the file system or in the database. The database not only stores the site's content but also a number of "configuration" items, such as roles & policies, content class & workflow definitions, RSS feed configurations and URL translations (I'm sure there are more).
Another scenario where this feature will pose an issue is if you use a node override to utilise a specific template for a particular node. In this case the entry in override.ini relies on a specific node_id to link the template to the node. It's unlikely that the node_id of the development system will match the live system and the deployment will fail. Roles and policies will also suffer from this issue as they are reliant on content e.g. applied to a specific node subtree or applied to a user group.
These configuration items play an important role in a correctly functioning eZ Publish site. The reliance of configuration information stored in the database makes it difficult to capture this information in revision control in a way it can be automatically deployed or rolled back from the RCS.
Earlier this year Jérôme Renard published an great article entitled Using Subversion with eZ Publish that touched on this point, suggesting that some tables can be exported from the database and the resulting dump included in the RCS. While this would work ,it relies on the developer remembering to do it when changes are committed. It aslo means that the specific configuration changes are not captured in the RSC with any associated file changes. i.e. It's not easy to look at the diff from the previous commit and see what changed.
I suspect that eZ Publish is not the only platform effected by this issue. While not the exact problem, Ruby on Rails solves a similar issue though use of migrations where database changes for both the update and reverse it are stored in files and applied programatically.
How to you address this issue this for your eZ Publish projects? Database dumps? The eZ package system? Home grown scripts? Something else?