/ software

svn and case-insensitive file systems

tl;dr version

svn rm ^/path/to/file -m "removing duplicate version"

Explanation

There's a plugin for WordPress that I help maintain. Along the way something decided that the readme.txt file should also be submitted as README.txt. Note the capitalisation.

Because the systems I'm using are case-insensitive (meaning the two files are the same from the OS's point of view), I only ever saw one file, and never thought about this being a problem.

This can lead to problems though. When you check out the same repository, you're given one file, you make the edits, you check them in, and your changes aren't picked up, because the front facing site is parsing the other file. Not only that, right after checking out the project, you're left with this:

files missing

That right there is telling me files are missing DESPITE the fact that I've just checked the repo out.

Wat

The reason is that this is the repository:

duplicate files

I had two copies of the files with different capitalisation. Because my operating system (Mac OSX) doesn't really care about caps, it pulled down one of them. But SVN expects two. One of them's missing. How to solve this?

Solution

I had to issue commands directly to the svn repository rather than making the change locally and checking the changes in.

svn rm ^/ghost/tags/0.0.3/README.txt -m "removing duplicate file" worked. Note that when working with the WordPress repository, you need to have your plugin's slug after the ^/ bit.

Huge thanks to @Drarok

Gabor Javorszky

I'm a freelance WordPress / WooCommerce developer focusing on Subscriptions and advanced functionality. Get in touch: @javorszky / gabor (at) javorszky (dot) co (dot) uk. Read more on the About page.

Read More