3.0 Release Notes 🍸¶
VersionPress 3.0 is a major usability and reliability release. It is also the first release available on GitHub as an open source project.
Released on 28 April 2016. Release blog post.
Note: this is an Early Access release
Early Access is a period during which VersionPress is reasonably stable but still young, limited in scope and an external backup is recommended at all times. Learn more about EAP.
New in 3.0¶
Usability improvements¶
- Searching (filtering) site's history (#586). You can search commits by authors, dates, commit messages, WordPress actions, etc. It's quite powerful, see the documentation.
- Undo multiple commits at once (#201). Say that you trashed a post and then deleted it. To fully undo these two actions, you can now select both of them using checkboxes and restore the post in one go.
- Environment tracking (#609, #459). VersionPress 3.0 tracks where a change originated, for example, in staging, production or Bob's PC. Environment names are customizable and displayed using a visual hint in the UI.
- Other UI improvements. For example, the main table now displays an avatar of users who made the changes (#853) and there have been some improvements to the full diff view.
- Customizer changes produce nicer messages (#432). The generic "Customized theme XYZ" message is now replaced by more descriptive messages like "Updated title ...", "Updated menu ...", etc.
- Service panel updates (#732). It now links to the System Info page and the GitHub support repo.
Core versioning improvements¶
Most of the development time was spent improving the core versioning engine. As a result, VersionPress 3.0 supports various scenarios better than the previous releases.
- Serialized data are diff- and merge-friendly (#619, #829). This automatically improves things like IDs in widgets (#814) or sticky posts (#819).
- Custom merge driver was implemented to handle some tricky scenarios. The two specific improvements are:
- Date modified field are now handled correctly (#588). Before VersionPress 3.0,
post_modified
andpost_modified_gmt
fields were ignored because tracking them created a lot of merge conflicts and we thought we could compute the values from Git history anyway. Unfortunately, that was not true for posts created before VersionPress was installed. VersionPress 3.0 tracks date modified's in a repo and avoids merge conflicts at the same time. - Changes on adjacent lines no longer create conflicts (#719). For example, if Alice updated
post_title
and Bob updatedpost_content
, merging their work no longer creates a conflict.
- Date modified field are now handled correctly (#588). Before VersionPress 3.0,
- Shortcodes with IDs work across environments (#654). Shortcodes like
[gallery ids="2,3,4"]
will now update these ID correctly across environments. New*-shortcodes.yml
file format was developed to support that. - Frequent DB writes no longer create excessive number of commits (#512). Things like view counters, Akismet spam count etc. are now committed once in an hour (configurable) or before actions like cloning or merging. This avoids floods of not very useful commits.
- Configurable entity ignoring and, specifically, better spam comment handling (#511). Some entities just should not be part of the repository, e.g., transient options or spam comments. Previously, some of this was hardcoded (e.g., transient options) or not handled very well (e.g., spam comments). VersionPress 3.0 introduces a better, extensible ignoring mechanism that will be user-configurable in the future.
- Ignoring of specific database columns (#902). Similarly to ignoring entities (database rows), VersionPress can also ignore database columns. These columns are either plain ignored (for example, VersionPress doesn't care about
option_id
, onlyoption_name
) or ignored with a reference to a PHP function that computes the values (for example, post'scomment_count
is computed dynamically). - Initial support for custom directory layouts (#565). WordPress location,
wp-content
,plugins
oruploads
directories can now be customized. The support is initial, for example, the structure needs to be defined before VersionPress is activated, more complex setups like Bedrock are not fully supported yet, etc., but it's a good start. - Data updates via
query()
are now understood (#510). Previously, VersionPress handled data updates via theinsert()
,update()
anddelete()
methods which are quite straightforward to support and cover 99 % of the changes. However, that last 1 % was missing, and VersionPress 3.0 adds it by also supporting thequery()
method. - Common (shared) config (#630). Most things in
wp-config.php
are environment-specific, for example, database connection, so VersionPress gitignored this file since 1.0-beta2. However, some config values should be shared, like the custom folder constantsWP_CONTENT_DIR
orWP_PLUGIN_DIR
. So VersionPress 3.0 adds a config file calledwp-config.common.php
which is committed into the repository andrequire
'd from the standardwp-config.php
file. - General reliability improvements. We've improved how VersionPress stores and parses the internal data formats and added some more tests around that. VersionPress 3.0 should cover anything and everything that vanilla WordPress 4.5 does, in a reliable fashion.
Other notable changes¶
- Better update method that keeps the same INI files and VPIDs across VersionPress releases was added (#906). This makes inspecting history much easier. Note that this will only become useful after 3.0, for instance, when updating to 4.0. Right now, we're only shipping the necessary underlying code. There's also a convenience WP-CLI command
wp vp update
available (PR #931). vpconfig.neon
(custom configuration format) was replaced by the standardwp-config.php
constants (#566).- NEON file format was replaced with a similar but more common YAML (#703).
- PHP 5.6+ is now required (yes, we don't want our users to run on unsupported versions of PHP; #726).
- VersionPress underwent a security review and general code review by @danielbachhuber – thank you Daniel!
See all the changes in the 3.0 milestone on GitHub.
Upgrade notes¶
VersionPress 3.0 is not upgradable from previous releases, full re-activation is required. The recommended procedure is:
- Put the site in a maintenance mode.
- Deactivate VersionPress (just deactivate, do not uninstall).
- Delete the contents of
wp-content/plugins/versionpress
and extract the current version there. - Activate & initialize the plugin again.
- Disable maintenance mode.
System requirements¶
General system requirements:
- PHP 5.6.0 or later
- WordPress 4.4 or later
- Git 1.9 or later
proc_open()
enabled
System requirements for sync / multi-environment workflows:
- Custom server or VPS is recommended.