VersionPress 3.0 has been released officially on 28th of April and is a prime example of what transitioning to open source can bring to the table of application features and improvements.
There is a bunch of new options and improvements which are worth mentioning like:
- Filtering – You are now able to search changes by authors, dates, commit messages, WordPress actions, etc.
- Bulk undo – Changes to the website that involved multiple actions like trashing a post and then deleting it forever can be reverted by selecting both and restoring the post.
- Environment tracking – VersionPress 3.0 tracks from which environment a change originated. This provides another way of easily orienting yourself in the changes on your website.
Some core version improvements show that a strong base is an important part of a stable platform:
- Serialized data is diff- and merge-friendly which improves IDs in sticky posts and widgets.
- Date modified fields are handled correctly – Merge conflicts from tracking post_modified and post_modified_gmt fields for posts before the installation of VersionPress are now avoided.
- Changes on adjacent lines no longer create conflicts – When different users update adjacent lines, merging the changes they made no longer creates a conflict.
- Shortcodes with IDs work across environments – Shortcodes will now update IDs correctly across environments. A new *-shortcodes.yml has been developed to support this change.
- Database writes – Database related writers like view counters, plugin actions etc now do not create excessive amounts of commits but instead have a configurable interface with a default value of once per hour. This is implemented in order to remove commits flooding.
- Configurable entity handling – Some entities just should not be part of the repository such as transient options or spam comments. VersionPress 3.0 introduces a better, extensible ignoring mechanism to deal with such entities.
- Ignoring of specific database columns – As the name suggests, you can now fully ignore specific database columns or ignore dynamically computed by PHP functions values.
- Initial support for custom directory layouts – WordPress location, wp-content, plugins or uploads directories are now customizable. However, the structure needs to be defined before VersionPress is activated.
- Data updates via query() are now understood – Previously, VersionPress handled data updates via the insert(), update() and delete() methods which support 99 % of the changes. Now, that last 1 % is added by supporting the query() method.
- Common config – as most of the information in wp-config.php is environment-specific this file was ignored. However, values like WP_CONTENT_DIR and WP_PLUGIN_DIR add a config file named wp-config.common.php which is committed into the repository and required from the standard wp-config.php file.
- General reliability improvements – improvements in how VersionPress stores and parses internal data formats. VersionPress 3.0 covers everything that vanilla WordPress 4.5 does.
Other notable changes
- Better update method that keeps the same INI files and VPIDs across VersionPress releases which makes inspecting history much easier.
- vpconfig.neon (custom configuration format) was replaced by the standard wp-config.php constants.
- NEON file format was replaced with a similar but more common YAML.
- PHP 5.6+ is now required.
- VersionPress underwent security and general code reviews
As much has changed in VersionPress 3.0, the platform cannot be upgraded from previous releases and a full re-activation is required. The recommended procedure is:
- Put your website in maintenance mode
- Deactivate VersionPress
- Delete the contents of wp-content/plugins/versionpress and extract the latest version there.
- Activate & initialize the plugin again.
- Disable maintenance mode.
These improvements are surely to bring a better experience as VersionPress 3.0 provides more control and choices for users.