23

I've set up subversion and apache on my server.

If I browse to it through my webbrowser it works fine (http://svn.host.com/reposname). However, if I do a checkout on my machine I get the following error:

Command: Checkout from http://svn.host.com/reposname, revision HEAD, Fully recursive, Externals included  
Error: Repository moved permanently to 'http://svn.host.com/reposname/'; please relocate  

I checked apache's error log, but it doesn't say anything. (it does now - see edit)

My repositories are stored under: /var/www/svn/repos/

My website is stored under: /var/www/vhosts/x/...

Here's the conf file for the subdomain:

<Location />
   DAV svn
   SVNParentPath /var/www/svn/repos/

   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /var/www/svn/auth/svn.htpasswd
   Require valid-user
</Location>

Authentication works fine.

Does anyone know what might be causing this?

-- Edit

So I restarted apache (again) and tried it again and now it give me an error message, but it doesn't really help. Anyone have an idea what it means?

[Wed Mar 31 23:41:55 2010] [error] [client my.ip.he.re] Could not fetch resource information.  [403, #0]
[Wed Mar 31 23:41:55 2010] [error] [client my.ip.he.re] (2)No such file or directory: The URI does not contain the name of a repository.  [403, #190001]

-- Edit 2

If I do svn info it doesn't give anything usefull:

[root@server domain.com]# svn info http://svn.domain.com/repos/
Username: username
Password for 'username':
svn: Repository moved permanently to 'http://svn.domain.com/repos/'; please relocate

I also tried doing a local checkout (svn checkout file:///var/www/svn/repos/reposname) and that works fine (also adding / commiting works fine). So it seems is has something to do with apache.

Some other information:

  • I'm running CentOs 5.3
  • Plesk 9.3
  • Subversion, version 1.6.9 (r901367)

-- Edit 3

I tried moving the repositories, but it didn't make any difference.

selinux is disabled so that isn't it either.

Bart S.
  • 283
  • 1
  • 4
  • 10
  • 1
    Why do you have `Options +indexes` that shouldn't really do anything useful in a svn location. – Zoredache Mar 31 '10 at 22:22
  • Have you tried temporarily disabling anything to do with authentication/authorization? – Zoredache Mar 31 '10 at 22:24
  • I tried to make it show me an overview of all repositories (later I found out that there's a different command for that), I removed it. I also removed authentication but it didn't solve anything (Auth actually works fine, it asks me for a username / password and only accepts a real combination). – Bart S. Apr 01 '10 at 09:37

12 Answers12

22

I had this recently... but it turned out I had forgotten the url :)

One thing you must do is ensure your svn Location does not overlap any apache-servable websites. ie, if you set your DocumentRoot to be /www, and your svn Location to be /www/svn... then you're in trouble - Apache won't know what its supposed to be served with (ie the svn special handlers, or a straight http handler).

See the FAQ entry for this.

gbjbaanb
  • 3,852
  • 1
  • 22
  • 27
  • This seems like it could be the right answer, but here's another possible post related to this: http://forum.webfaction.com/viewtopic.php?id=2423. – Paul Kroon Apr 04 '10 at 00:42
  • 1
    Wow, I already knew about this but I thought I gave it another try. I created a new repository and that worked. I was confused as to why this was, so I FTP'd into my server and found out there was a directory in the httpdocs directory of the subdomain (created by plesk) called test (the same as my repository). I deleted it, and now it works. Thanks for the help. – Bart S. Apr 04 '10 at 12:57
  • 1
    To elaborate a bit on one common scenario. If you have a virtual host setup and want SVN at the root (e.g. http://svn.example.com/ is your repo URL), do NOT set "DocumentRoot /svn" and then use a "" block inside your VirtualHost to configure the DAV svn options for the root path. This will trigger the problem where Apache gets confused between the DAV handler and its internal handlers. There should be NO DocumentRoot directive in your VirtualHost block. Use a "" block instead to configure the DAV svn options for the root path. – nezroy Dec 17 '10 at 20:48
  • I had put an Alias directive in my config, eg `Alias svn /repositories` and then set up everything in ``. The problem was exactly as in the FAQ link, although mysteriously, it worked perfectly for a month and then stopped on a Wednesday afternoon at tea time. If your repository is at "/" then you'll have an overlap with your DocumentRoot directive. – Matt Connolly May 18 '11 at 07:46
  • It worked perfectly ! It was the DocumentRoot problem ! +1 – Feiticeir0 Oct 05 '11 at 11:46
  • Thank you very much! Moving my svn folder from /var/www/public_html/svn to just /var/www/svn fixed my issue! – Pada Mar 27 '13 at 13:25
2

Try checking out http://svn.host.com/reposname/ (note the trailing slash).

Bill Weiss
  • 10,782
  • 3
  • 37
  • 65
2

Check this web: http://www.rkrishardy.com/2009/12/subversion-fix-svn-copy-causes-repository-moved-permanentl/

Probably the alias points to the same place as congfigured is dav_svn.mod, and there is race-condition between apache and dav_svn while accesing repo.

It's better explained in provided article

In dav_svn.conf:

  <Location /svn>  #Alias we are talking about
  DAV svn

In apache_site.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName svn.za11.pl

    #Alias /svn  "/mnt/nfs/svn/"  ###Comment out or change this alias
    DocumentRoot /mnt/nfs/svn/
    <Directory /mnt/nfs/svn/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
        AuthType Basic 
        AuthName "Subversion Repository"
        AuthUserFile /etc/apache2/dav_svn.passwd
        Require valid-user
    </Directory> 
... rest of the file
sirkubax
  • 21
  • 2
1

I have a vhost setup with my repo at svn.mydomain.com/sites/ my vhost had a DocumentRoot and Location block. Removing the documentroot solved this problem.

splattne
  • 28,348
  • 19
  • 97
  • 147
John
  • 11
  • 1
1

I got this error when I mistakenly put my repo under the html tree served by Apache, on my FC14 machine With RPM based subversion and apache installations.

SVNParentPath (in /etc/httpd/conf.d/subversion.conf) should point to a directory outside the DocumentRoot.

I moved my repo out, and the problem went away.

Hope this helps.

Matt
  • 11
  • 1
1

I know this is old but I found it on Google because I had the same issue. Make sure port 7080 isn't blocked by either computer or server firewall

Mikey B
  • 11
  • 1
0

It seems like you are not doing svn checkout, but rather svn update in an existing repository(?).

If so, do this:

svn switch --relocate http://svn.host.com/reponame

  • No, as you can see in the error message I gave it says "Command: Checkout from..." I really am trying a new checkout. – Bart S. Mar 31 '10 at 21:18
0

Moved permanently? Can you something like HTTPFox or something and verify that Apache is giving out the right status code for your repository(should be 200/OK). I believe status code 301 corresponds to a URL that has "moved permanently" and that sounds like what the svn client is referring to.

Earlz
  • 969
  • 5
  • 12
  • 28
  • Firebug and wget both give a 200 OK. But like I said, if I browse to it through my browser (by surfing to `http://svn.server.com/repos`) it works great, I get "repos - Revision 0: /" and everything. The problem only occurs when I do a checkout. – Bart S. Mar 31 '10 at 22:02
0

Maybe a bit late in the conversation, but I see this when using an Alias in the apache config to deal with the trailing '/': Alias /svn /path/to/svn/

0

You also need to make sure that no Alias directive maps to the location of the svn repos. I had this recently when I had

Alias /svn /var/lib/svn
<Location /svn>
...
</Location>

where the alias and the location directive apply to the same path.

0

I just had a similar problem not when CHECKING OUT, but when a COMMIT was made.

The reason? this folder "obj\Debug\TempPE", for some weird reason that folder "TempPE" is not posible to COMMIT it to the repository

Solution ?...COMMIT all the other folders of the project one by one and remove that location from the SVN server

-1

May be not the best but I have to resolve fast in the dav_svn.conf change the location from <Location /svn> to <Location /websvn>

then your repo will be changed from http://yourhost:port/svn/myrepo/ to http://yourhost:port/websvn/myrepo/

but for my this works.