WordPress
Article

Revisr – Git for WordPress

By Shaumik Daityari

If you’re a developer who uses WordPress, chances are that you probably try to implement processes in your development workflow into WordPress. One such process is the use of version control. At the very basic level, version control essentially creates checkpoints in your code, allowing you to go back in time if something goes wrong. Arguably, the most popular version control software today is Git.

Implementing such a system in WordPress is not difficult. You can create a Git repository to manage your WordPress source code (which is possible only on the self hosted version). Additionally, you can create a database dump and add it to the repository. Commits through time would track changes in your files and database.

Although Git repositories can be managed through an array of powerful commands on the terminal or GUI clients which do the heavy lifting, we are going to talk about Revisr in this post. Revisr is a plugin which helps you manage your files and databases within the WordPress admin panel.

Note: I suggest you go through an earlier post on the basics of Git to get familiar with the Git related terms that I am going to use in this article.

Getting Started

After installing and activating Revisr, you need to perform certain steps before the plugin does its work. In the admin panel, go to Revisr → Dashboard to initialize the git repository. Once initialized, it asks you to finalize settings (such as the name and email associated with your Git commits), before you can go back to the Dashboard page to commit.

Revisr Dashboard

Once you have confirmed settings, check the files that you want to stage for commit (Revisr selects all unstaged files by default) and commit them by adding a message.

New Commit

Once you have made changes after a commit (like say, installing a new plugin), you can come back to the dashboard and create a commit again.

Revisr New Git Commit

Branching Your Work

One of the most powerful features of Git is the ability to work with branches. The simplest way to understand a branch is to imagine it as a separate workflow. Git also allows you to merge branches.

Go to Revisr → Branches to view a list of branches, create, merge or delete them from within the section.

Branches in Revisr

Managing Remotes

Since Git is a distributed version control software, you may have copies of your repositories on different systems, sometimes on the cloud. In Git, a ‘remote’ is what these copies are called.

If you have a copy of the repository on the cloud (GitHub, BitBucket or GitLab), you can manage the remote using Revisr. Just go to the Remote tab of the Revisr Settings and fill in the details. In this example, I have created a repository on BitBucket (replace [password] with your password).

Revisr BitBucket Remote Repo

Once you have entered the details of your remote, you can select ‘Push Changes’ under the ‘Quick Actions’ panel on the Revisr Dashboard. In our case, this is how the repository looks once we have pushed the code.

Revisr BitBucket Changes

Warning

As houghtelin has rightly pointed out in the comments, please take care that your .git directory is not published to production when you are using Revisr. This directory contains some important information and you should definitely make sure it’s inaccessible to the public. There are a few different ways to do this, an easy way is to create an .htaccess file and instruct Apache to deny all requests to that URL.

Backup and Restoring the Database

In the introduction, I mentioned taking dumps of the database and attaching them to your regular commits. This is exactly what Revisr does. Before we proceed, you might want to have a look at the database structure of WordPress.

On the ‘Quick Actions’ panel on the Revisr Dashboard, you will find a ‘Backup Database’ button, which instantly backs up your database by creating dump files and committing it, according to the options set in the ‘Database’ tab of your Revisr Settings. Alternately, you have an option to back your database when you are creating a commit.

An error may occur if the correct path to MySQL is not set in the Revisr Settings. For instance, in MAMP, the path to MySQL is /Applications/MAMP/Library/bin/.

Revisr Error

Revisr creates a file for each table that is backed up from the database. Let us push and view the changes on BitBucket.

Revisr Database Changes

Troubleshooting

As you might have observed from the dashboard screenshot above, I was having trouble taking a backup of the database. I debugged the error by finding out that the MySQL path was empty. This was visible in the Help tab of the Revisr Settings page.

Revisr Troubleshooting

The help tab contains certain other information that might help you debugging your problems. You may also check the activity log in your Dashboard to find out what might be causing trouble.

Revisr Changes

Final Thoughts

There are many Git plugins for WordPress, and another popular option is VersionPress. While VersionPress focuses on changes on the site, Revisr gives more weightage to the development cycle (which should excite the developers). VersionPress came up with a detailed post on how the two are different.

Yet another version control management system for WordPress is Gitium.

What I mean to say is that whether you are a developer or just another blogger, managing your WordPress site through version control is never a bad idea. Although it might be a bit difficult to get used to, I assure you the benefits in the long run are going to be immense. At least, you wouldn’t be Googling frantically if you drop your database by accident!

Free Guide:

7 Habits of Successful CTOs

"What makes a great CTO?" Engineering skills? Business savvy? An innate tendency to channel a mythical creature (ahem, unicorn)? All of the above? Discover the top traits of the most successful CTOs in this free guide.

Comments
houghtelin

You've got to be extremely careful keeping your .git folder (repo) on live hosting such as would be the case if you were using Revisr. Especially so in the case of using Revisr with remote repository settings stored which makes it trivial to access http://example.com/.git/config providing you with the username and password of your remote repo if you saved your remote with https://username:password@bitbucket.org/myuser/myrepo.git

There are a good number of real problems that can occur when you keep a .git folder in public space but if it's necessary to do so it's always good to in some way or another protect that directory which Revisr doesn't automatically do. Even something as simple as putting an .htaccess file (if using apache) in your .git folder with the content being 'deny from all' is a step in the right direction.

Thanks for this post, I'm definitely giving Revisr a go in hopes of making it all that much easier to develop WP sites.

sdaityari

Hi houghtelin,

That is an important point that you have noted and I have updated the post to mention the same. Thanks for pointing it out! smile

Recommended
Sponsors
Because We Like You
Free Ebooks!

Grab SitePoint's top 10 web dev and design ebooks, completely free!

Get the latest in WordPress, once a week, for free.