Revisr 2.0 was released today, and contains a ton of under-the-hood improvements. Over 150 commits went towards this release.
While this release was focused on refinement, there were a few major changes that I’d like to review in detail.
No More Database
Commits and options are no longer stored in the database. Before 2.0, every commit also created a record in the database using a custom post type. This allowed for quickly viewing the commit later, and using WordPress custom post types made it possible to take advantage of the native WordPress UI.
While this looked good and worked well, it was less than ideal as it just added more moving parts. It also led to some confusion in regards to what was stored in the database and why.
With 2.0, Revisr instead pulls all commits directly from Git, with all views generated on the fly. Special consideration was taken in regards to performance, and it has been successfully tested on repositories with tens of thousands of commits. It turns out that in these cases, pulling directly from Git was actually faster than pulling from the database, so it was a win-win situation.
Also improved was the initial setup of the plugin. There is now a helpful setup wizard that will be loaded if no repository is found:
This allows for easier setup that allows you to add your whole site, your “wp-content” directory, or just a single plugin or theme under version control. It will also detect if there are any problems connecting to Git and allows for defining the installation path to Git without editing the wp-config, as in older versions. Alternatively, you can skip it altogether to setup Revisr the old way.
Just about everything runs smoother. Larger commits are now done in almost no time at all, and everything has been optimized to run efficiently. This is a trend that I hope to carry on in future releases and already have several things in development to further speed things up.
There were a lot of improvements across the board. The complete changelog is below:
- New: Commits are no longer stored in the database
- New: Setup wizard for when no repo is found
- New: View commits before pushing/pulling them
- New: View remote branches
- New: Sort/paginate branches
- New: Define installation path to Git from the settings page
- New: Action hooks and filters for extending Revisr
- New: Activity log can be filtered by age, event type, or username
- Tweak: Improved commit speed when there are no unstaged files
- Tweak: Include database backups in commit details
- Tweak: Improved general plugin performance
- Tweak: Improved file organization
- Tweak: Improved detection of unpushed commits
- Tweak: Improved information in the Help tab
- Tweak: Always show confirmation dialog before reverts
- Tweak: Removed unused bulk actions for commits
- Tweak: Refactored CSS/JS files
- Fix: PHP notice with saving the .gitignore
- Fix: Minor logging error when committing with “Backup DB” and “Push Changes” checked at the same time
- Fix: Committing a failed database backup
- Fix: Changing salts during a DB import logs a user out with no notification/error in Revisr
- Fix: Bug with the logged “Undo” URL for imports
- Fix: Bug with default sort order in the dashboard
- Fix: Conflict with BuddyPress