Svn repository stopped working with svn+ssh (but works locally on the server)

silviot picture silviot · Mar 14, 2011 · Viewed 16.7k times · Source

I had an svn repository that I used to checkout with the svn+ssh protocol. It has some EXTERNALS in it that refer to itself with the svn+ssh URL.

I was off this project for a while until today. When I try to access the svn+ssh url (that used to work some months ago) I get the message svn: No repository found in 'svn+ssh://my-correct.hostname.com/the/right/path/to/the/repository. I double checked, and both the path and the hostname are correct.

I tried to check it out on the machine hosting the repo using a file:// URL, and it succeeded until it had to checkout the EXTERNALS, where it failed with the No repository message. I used the same user locally and remotely.

Where should I look for logs/debug information to solve this issue?

Answer

user3185951 picture user3185951 · Jan 11, 2014

Thanks for introducing me to strace. I used strace to debug why the command:

svn+ssh://HOSTNAME/path/to/svn/directory

will not recognize this line in ~/.ssh/config:

Host HOSTNAME

To use strace, in the [tunnels] section of ~/.subversion/config. I changed this:

ssh = ssh -o ControlMaster=no

to this:

ssh = strace -o tmp ssh -o ControlMaster=no

Then I ran this command:

svn list svn+ssh://HOSTNAME/path/to/svn/directory

Looking at the output of strace that went into file "tmp" I could see that "HOSTNAME" was passed to the ssh command as "hostname". The quick fix was to change this line in ~/.ssh/config:

Host HOSTNAME

to this:

Host HOSTNAME hostname

Which causes the host specific settings to be applied whether the name of the host is passed to ssh as "HOSTNAME" or "hostname".