Is there any performance difference between subversion checkouts and exports when running your webapplication?
We already implemented this in our deployment process, without measuring for differences (which feels bad. and is bad.).
Our intentions were:
a) dumping overhead (.svn folders and its contents) and
b) improving any directory traversing stuff
Do you have any experience with or measurements for this?
It'd be heavily application dependent. With applications I've deployed, it's been irrelevant, as there's absolutely no directory traversal of the application directory going on from within the applications. Some frameworks, particularly Rails, will do auto loading of files within the application and do directory traversal to discover those files, but typical
Dir['**/**']
type affairs skip any "hidden" directories such as .svn and .git.If, for some reason, your application or framework had need to traverse all files under the application folder and didn't ignore hidden directories, there might be some negligible effect, but it would be so application and situation specific that you'll struggle to seek much advice from a generalized answer.
All that said, if you have no reason to push changes back from deployment to the SVN server and you're using a multi directory rolling style deployment mechanism (that is, you export/check out to a new directory every time then update a symlink or similar) you might as well go over to using export. If you just
svn update
within a deployment directory each time, you might want to stick with it for efficiency's sake..There is less IO for the Subversion client to write an export than a checkout, as the checkout does do a significant amount of locking and loggy writes.
Given that though, I find that having a checkout instead of an export in a web server document root is much better because you can simply 'svn update' to the latest version or run 'svn update -r PREV' to back out a bad push. So I find the convenience of this outweighs any advantage of less IO. This assumes that you are not exporting and then FTP'ing the export to your web server.
How are you deploying to your web server?
One thing that really makes a difference with SVN (especially checkin) is virus scanning. If you can turn AV off for the .svn directories then you'll see a difference.