Question: Is the built-in WordPress automatic install / upgrade process compatible with a SVN deployment of WordPress?
Short answer: Yes.
Ever since WordPress came out with the automatic upgrade functionality in 2.7 I’ve hesitated to use it since the majority of our client installs are deployed using Subversion (svn) and I wasn’t sure how it would react with the .svn directories.
Today I finally decided to figure it out, and found that the WordPress team coded their upgrading functions exactly correctly (as far as not overwriting or deleting .svn directories goes). In addition, their script correctly removes old and unneeded files that might be present.
First, check to make sure that our svn checkout is clean:
$ svn st
Next, we begin the automatic upgrade process.
Step 1: Click the WordPress 2.8.5 “Please update now.” link:
Step 2: Backup your files as suggested – http://codex.wordpress.org/WordPress_Backups
Step 3: Enter your FTP connection details and click the Proceed button
Step 4: Wait while the files are downloaded and unzipped. This can take a minute or two, so be patient.
Now we can check to see what files were changed:
$ svn st
M wp-app.php
M xmlrpc.php
M wp-includes/post-template.php
M wp-includes/version.php
M wp-includes/theme.php
M wp-includes/comment-template.php
M wp-includes/bookmark-template.php
M wp-includes/media.php
M wp-includes/formatting.php
M wp-includes/author-template.php
! wp-includes/images/swf.png
! wp-includes/images/audio.png
! wp-includes/images/zip.png
! wp-includes/images/html.png
! wp-includes/images/doc.png
! wp-includes/images/video.png
! wp-includes/images/pdf.png
! wp-includes/images/js.png
! wp-includes/images/exe.png
! wp-includes/images/text.png
! wp-includes/images/default.png
! wp-includes/images/tar.png
! wp-includes/images/css.png
M wp-includes/rewrite.php
M wp-includes/general-template.php
M wp-includes/capabilities.php
M wp-includes/classes.php
M wp-includes/category-template.php
? wp-content/plugins/hello.php
M wp-content/plugins/akismet/akismet.php
M wp-content/plugins/akismet/readme.txt
M wp-trackback.php
M readme.html
M wp-admin/includes/post.php
M wp-admin/includes/update-core.php
M wp-admin/post.php
! wp-admin/js/forms.js
! wp-admin/js/upload.js
M wp-admin/edit-attachment-rows.php
! wp-admin/import/btt.php
! wp-admin/import/jkw.php
M wp-admin/import/wordpress.php
! wp-admin/edit-form.php
! wp-admin/link-import.php
! wp-admin/images/media-button-gallery.gif
! wp-admin/images/tail.gif
! wp-admin/images/gear.png
! wp-admin/images/comment-stalk-classic.gif
! wp-admin/images/media-buttons.gif
! wp-admin/images/comment-stalk-rtl.gif
! wp-admin/images/tab.png
! wp-admin/images/comment-stalk-fresh.gif
! wp-admin/images/comment-pill.gif
! wp-admin/css/press-this-ie-rtl.css
! wp-admin/css/press-this-ie.css
! wp-admin/css/upload-rtl.css
M wp-admin/install.php
M wp-admin/page.php
Notice that some old files have been removed and others have been modified. (See http://codex.wordpress.org/Files_Automatically_Replaced_by_Core_Upgrade for details on all the old files that the automatic upgrader removes).
Next we schedule old files to be removed from svn:
$ svn st | grep ! | sed 's/! *//' | xargs svn rm;
Next we commit the modified files and the removed files:
$ svn ci -m "Upgrading to the latest version of WordPress 2.8.5"
That’s it. The WordPress automatic upgrade process does not interfere with .svn directories, and is therefore compatible with maintaining a deploy from Subversion workflow.
5 responses to “Is WordPress automatic install / upgrade compatible with a SVN deployment of WordPress?”
Thanks for this! I’ve been looking everywhere for that says these two are compatible and nothing. Even those in the WordPress community believe that you cannot do both.
Do you have the entire WP directory under subversion or is it possible to just commit the theme and plugin directories?
@estrahon, Lately I’ve been committing everything, but adding a svn:ignore rule for the contents of /wp-content/uploads/ as well as for /wp-content/upgrade/. If you only wanted to keep your theme and plugin directories I’m sure you could do that (since WordPress isn’t deleting the .svn directories) but you’d probably have to check both of them out how you wanted to do so.
I upgraded all my Word Press plugins and all of the .svn directories got deleted from the upgraded plugins directories. Very annoying…
This info might have changed since you last posted — at least for the plugin directory. Check out the following link.
http://nooshu.com/wordpress-plug-ins-and-svnexternals
@Stephen, yes, WordPress treats plugin upgrades differently. I wish it didn’t but it does. My current method is to keep plugins under version control as well and not upgrade them using the automatic upgrader. A nice improvement would be to change that behavior so that the auto-upgrade process does not delete the .svn directories, but I haven’t looked into what it would take to do that yet. I have tried using the svn:externals method, but I don’t like how it exposes you to buggy plugins — I prefer to download the plugin, test it, then commit it to my svn repository and update the live working copy.