• 13

A PHP Error was encountered

Severity: Notice

Message: Undefined index: userid

Filename: views/question.php

Line Number: 191


File: /home/prodcxja/public_html/questions/application/views/question.php
Line: 191
Function: _error_handler

File: /home/prodcxja/public_html/questions/application/controllers/Questions.php
Line: 433
Function: view

File: /home/prodcxja/public_html/questions/index.php
Line: 315
Function: require_once

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..

  • 3
Reply Report

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?

  • 2
Reply Report
      • 2
    • We have one server onsite where we manage deployment. Yes, there is only one script to roll out a full deployment :). Since we have multiple webservers, the deployment machine updates a checkout to the chosen revision, exports this to another folder, which will then get rsynced to the webservers.

Trending Tags