How to use SVN for updating WordPress plugins
Written on August 3, 2021
I’m a git user, and I always forget how to use SVN to update my WordPress plugins for the official plugins repository listing. Here is a reminder to myself. This assumes you have svn installed on your system already.
The first thing is to make the updates in the git tracked folder. Don’t make them directly in the svn repo, as you will fall into a nightmare of “which one did I update” and “oh I messed up and need to make a fix in both places”. I speak from experience. Also, don’t forget to increment the plugin version in readme.txt’s “Stable Tag” as well as the plugin header file’s “Version” .
Once you’re done in the git tracked folder…
- Get the plugin repository url. You can get this by navigating to the “development” tab on the plugin’s public page, or you can just visit https://plugins.svn.wordpress.org/{plugin-slug}/
- Run
svn checkout {repository-url}
to place the svn repo on your machine. - Copy your updated files and directories into the
/trunk/
directory. Be sure not to carry over the .git directory, your editor config, or stuff like that. - In order to create the new tag folder in the
tags/
directory, runsvn copy trunk tags/{version-number}
from the plugin root. According to the WordPress SVN guide, this is actually important. - Make sure you run
svn status
to see what needs adding to the tracked files. Anything with a ? as the status marker on the left of the list needs to be added (usesvn add
to add files to the repo). svn commit
and create your commit message. This will automatically push the repository as well. You will be asked for your wordpress.org password, then the commit is pushed.
Basic SVN Commands
svn status
(same as git)
svn update
Pulls down latest from remote. Will keep local modifications where possible.
svn diff
(same as git)
svn revert {filename}
This discards local modifications.
svn rm
Remove file from repository
svn rename
svn add
This adds files to the respository that weren’t previously tracked.
svn commit
This commits any changes and opens the editor for a message. Just like with git, you can pass a -m "message here"
flag. Note: When the commit is, well, committed, the repo is automatically pushed to the remote.