Subversion: Dealing with Umlaute

I had a very annoying problem with my subversion today: A file had an ‘ö’ in it. I checked it in on Windows without noticing it, and when I checked the file out on my Mac it immediately caused a conflict:

A    Life/Jeppe Family History/Old & Junk/jeppe neu
C Life/Jeppe Family History/Old & Junk/Die Köter, auch Kotsassen ge.textClipping
A    Life/Jeppe Family History/Old & Junk/jeppefamily.backup.gramps.old

Updated to revision 41.
Summary of conflicts:
Tree conflicts: 1
Nilss-MacBook-Air:docs nils$ svn up
Updating ‘.’:
At revision 41.

I attempted to delete the file, and at first this seemed to work:

$ svn delete Die Köter, auch Kotsassen ge.textClipping
D Die Köter, auch Kotsassen ge.textClipping

However, the conflict remained:

$ svn commit -m “Koeter”
svn: E155015: Commit failed (details follow):
svn: E155015: Aborting commit: ‘/Users/nils/Documents/svn/docs/Life/Jeppe Family History/Old & Junk/Die Köter, auch Kotsassen ge.textClipping’ remains in conflict

Interestingly, the file was now also missing on my local system. It may be my fault; but anyway, I was a bit lost.

In the end, the following worked:

$ svn remove –force ‘/Users/nils/Documents/svn/docs/Life/Jeppe Family History/Old & Junk/Die Köter, auch Kotsassen ge.textClipping’
$ svn resolve –accept=working ‘/Users/nils/Documents/svn/docs/Life/Jeppe Family History/Old & Junk/Die Köter, auch Kotsassen ge.textClipping’
Resolved conflicted state of ‘Life/Jeppe Family History/Old & Junk/Die Köter, auch Kotsassen ge.textClipping’

$ svn commit -m “Koeter”
Adding Life/Jeppe Family History/Old & Junk/Die Koeter, auch Kotsassen ge.textClipping
Deleting Life/Jeppe Family History/Old & Junk/Die Köter, auch Kotsassen ge.textClipping
Deleting Life/Jeppe Family History/Old & Junk/Die Köter, auch Kotsassen ge.textClipping
Transmitting file data …
Committed revision 42.

Notice the interesting double delete there…

Anyway, the moral of the story – as if I didn’t know already – avoid special characters like the plague they are.

Subversion: Insufficient NODES rows Error

Trying to upgrade an svn repository, I got the the error:

vn: E155016: Insufficient NODES rows for

followed by the path to a file. This can be solved by deleting a certain file type:

Find them:

find . -name dir-prop-revert

To delete them:

find . -name dir-prop-revert -exec rm {} ;

If you’d like to make backups instead:

find . -name dir-prop-revert -exec mv {} {}.backup ;

Now try the upgrade again:

svn upgrade

No more error messages. 🙂

SVN Stalling

I had this weird problem where my svn would upload a few MB and then stall and timeout. At first I of course suspected a problem with either svn on the server, the apache, or tortoisesvn. I tried CPU affinity settings, Apache settings – nothing I did helped, including updating to latest patchlevel etc. After some trial and error, I found out that restarting my OpenVPN – which transports my svn traffic to ensure it is encrypted – seemed to help for a few moments.

After the timeouts, there were actually moments where I couldn’t connect to my server at all. Restarting the OpenVPN connection alleviated that problem.

So checking the log, I found that the openvpn reconnected when it timed out, and I saw this message:

Apr 3 01:14:15 corinth ovpn-server[1050]: MULTI: new connection by client ‘ghostwheel’ will cause previous active sessions by this client to be dropped. Remember to use the –duplicate-cn option if you want multiple clients using the same certificate or username to concurrently connect.

Aha! What IP was I coming in from?

Apr 3 01:14:15 corinth ovpn-server[1050]: MULTI: Learn: 172.16.0.6 -> ghostwheel/80.187.98.92:10654

And that resolves to an DTAG hostname:

# host 80.187.98.92
92.98.187.80.in-addr.arpa domain name pointer tmo-098-92.customers.d1-online.com.

So the solution of the problem was after all quite simple: Another machine was basically kicking me out of my VPN. And yes, I remembered that my girlfriend borrowed my Samsung NC 10 – and she probably left it running when she went to work. I hadn’t remembered that I had just copied the VPN config including certificate when I set up my home PC, but of course it was easy to fix.