Best solution to "simulate" externals

Hi,as stated in the docs, it is not recommended to use Subversion externals or at least not to resolve them by Continua’s Repository sync mechanism. As a result, we must simulate the externals. One example from the wiki page suggests using Repository Rules however this does seem to “preserve” the full path from the repository root e.g. /HelloWorld/HelloWorld/program.cs is copied as a whole path. We both use Subversion directory and file externals, and we would like to “copy” those files, and even may want to rename. Which is possible using Subversion externals but I haven’t been able to do this using Repository Rules. What would you advise? Is this possible using Repository Rules or should we move to a workaround by letting the Agent copy the files during the Build stage? For now this would be an option since all externals are located in the same repository and even the same checkout, but I feel this would move us further from the ‘main problem’, which is Continua not being able to include externals without a big performance penalty. (This sounds a little bit harsh, I understand the solution and consequences of externals and the way CI handles it). Just looking for a descent workaround, so if anyone has tips how to use externals during server/agent process instead of resolving them during Repository sync I’d be looking forward to hearing from you.

Follow up on this:

It looks like we’re having problems with a certain Subversion repository when we enable ‘Checkout’ Externals in the Repository instead of ‘Ignore’. When I create a custom SVN repo with externals all works fine.

In this case, I have a SVN repository containing both directory and file externals and those “linked” elements are mandatory for a MSBuild step. Setting repository in Continua to ‘Ignore’ therefor results in a build failed.

However, enabling the ‘Checkout’ option - which takes a while, but that’s because of the repository size, I know, we need to work on that as well

I will have to test this and get back to you. The main reason we do not recommend using externals is performance. The only way we can detect changes in externals is to check them out, and that can have a significant io overhead, and can lead to timeouts.

One thing you can do to help us figure this out is to enable debug logging :

http://wiki.finalbuilder.com/display/continua/Debug+Logging

Then set the external to Checkout and try to run a build. Then stop the service, disable debug logging and send the debug log to support @ finalbuilder.com

I’ve just sent you an email containing the logfile and steps to reproduce.

Thanks for your help so far.