views:

819

answers:

4

I have a website under svn and I want to patch the live website with what's currently in the repository (i.e. effectively calling svn update on the live website), but I don't want .svn directories in every folder on the production website.

Is there a way to set up svn so that the .svn folder with version information is not in the same directory as the files under version control?

In git you can create and detatch a work tree and push updates to a project this way(according to http://toroid.org/ams/git-website-howto), I basically want to be able to do something similar in svn.

+3  A: 

How about rsync configured to not copy ".svn" directories?

rsync --exclude=.svn local_svn_copy webserver:site/

This can be re-run to refresh the webserver's copy.

Rhythmic Fistman
+12  A: 

svn export works similarly to a checkout but without the .svn directories. However, you cannot update such a structure since it's not a svn working copy.

You can also configure the web server to disallow access to the .svn directories and just go with the checkout+update method.

laalto
+1 two good options
Keith Bentrup
See this question for information on how to do the second option: http://stackoverflow.com/questions/214886/how-do-i-hide-directories-in-apache-specifically-source-control
Matthew Scharley
I'm going to use the second option for now, thanks!
Charles Ma
A: 

As laalto has mentioned svn export makes for an easy but not very efficient method for updating a "working copy" when used repeatedly:

milen@dev:~$ svn export --non-interactive --force "<URL>" <directory>
Milen A. Radev
A: 

You could also use git-svn to create a git mirror of the website and then publish the way described in the article you linked. Obviously this isn't a straight forward solution though.

bluebrother