Quick Tip: Deploying a Plugin From Git to WordPress.org

You're developing a plugin on GitHub, and now you're ready to deploy it to WordPress.org... uh-oh, WordPress.org plugin development is done via SVN. Now what? Not to worry, there's a script for that.

Recently I've been developing a plugin for WordPress that I wanted to release on the WordPress.org plugin directory. I prefer to use Git as my version control software these days (I used to use SVN), but the plugin directory uses SVN. Luckily, there's a nice script available on GitHub called "Github to WordPress Plugin Directory Deployment Script" to allow me to develop with Git, and then deploy directly to the SVN repository on WordPress.org when I'm ready to release the lastest version.

This version of the script is from Ben Balter, which was forked from a similar script by Brent Shepherd, which was forked from a script by Dean Clatworthy. Each of them has made various improvements on the one before, and I've found the end result to be really useful.

I've created my own fork of this script which I use, so it has my SVN username.


The Script


Usage

I use this script by having it sitting in my /wp-content/plugins/ directory. Then when I'm ready to deply one of my plugins, from the Terminal, I run ./deploy.sh. The script then prompts me for the slug of my plugin, which I provide. It checks that the plugin version matches the "Stable" version in my plugin's readme.txt, and then goes about it's business doing the deployment.


What Does It Actually Do?

In essence, the script does the following steps:

  1. Creates a tag for the release version in your Git repository
  2. Creates a temporary SVN checkout of your plugin's repository from WordPress.org
  3. Exports the contents of your Git repository into the SVN repository
  4. Commits these changes to the SVN repository
  5. Creates a tag in the SVN repository and commits that
  6. Removes the temporary SVN checkout from your development machine

That's it! Well, there are a few other things in there such as recursively checking out so it supports submodules, etc. as well, but that's the crux of it.

Enjoy!

Tags:

Comments

Related Articles