svnsshsvn-externals

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


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?


Solution

  • I found my way through. I'm writing it here for future reference.

    EDIT: It turns out a fellow colleague modified that file without notifying. Yet finding the cause of the problem was more difficult than ideal.

    Long story short: even if I used the url svn+ssh://my-correct.hostname.com/the/right/path/to/the/repository the real path looked up on the server was /var/svn/the/right/path/to/the/repository. A wrong path indeed. But I think that the steps I did to find this might be useful to others, so I'll report them here.

    First I moved (on the server) /usr/bin/svnserve to /usr/bin/svnserve.orig and put my own svnserve with these contents:

    #!/bin/bash
    strace -o /tmp/svntrace /usr/bin/svnserve.orig $@ | tee /tmp/svnserve-out
    

    Then I run my checkout again, and after that /tmp/svntrace on the server had in its tail all the info I needed to troubleshoot the problem.

    It seems that in the file /var/svn/svnwrapper.sh a new root for svn was set with the -r option. After removing that all worked like a charm.

    I still can't understand what happened (it used to work in the past and I'm almost sure I didn't change anything).