I can see my repository in a web browser, but 'svn checkout' gives me the error "301 Moved Permanently." What's wrong?

This means your httpd.conf is misconfigured. Usually this error happens when you have defined the Subversion virtual "location" to exist within two different scopes at the same time.

For example, if you've exported a repository as Location /www/foo, but you've also set your ?DocumentRoot to be /www, then you're in trouble. When the request comes in for /www/foo/bar, Apache doesn't know whether to find a real file named /foo/bar within your ?DocumentRoot, or whether to ask mod_dav_svn to fetch a file /bar from the /www/foo repository. Usually the former case wins, and results in the "Moved Permanently" error. The solution is to make sure your repository Location does not overlap or live within any areas already exported as normal web shares.

It's also possible that you have an object in the web root that has the same name as your repository URL. For example, imagine your web server's document root is /var/www and your Subversion repository is located at /home/svn/repo. You then configure Apache to serve the repository at http://localhost/myrepo. If you then create the directory /var/www/myrepo/, this will cause a 301 error to occur.