Hello!
I notice that Continua CI makes a full checkout each build.
I my case I have a big repository with Libs and components that rarely changes and it’s shared with several projects.
It would be great if the repositories were managed by revision and not by build.
Thanks,
Pedro Lopes
Hi Pedro
This is how it works :
When we detect a change in your repo, we checkout (or export in the case of subversion) the revision to continua’s cache folder for that repo, and commit that revision to our cache (a mercurial repo). When a build is started, the agent pulls the server side cache to the agents cache (this also happens in the background, so quite often the agent already has an updated cache) and then exports the revision to the build’s workspace (using the source rules defined on the stage). So every build is a clean build.
In your case I know you are using subersion externals, I would suggest that if those externals point to large rarely changing repositories, then you are better off Not using the externals feature (set it to Ignore), and instead create separate continua repos for those externals, and use the source rules to map the externals into the correct location in your source folder.
The benefit of doing this is that we don’t need to export the externals into the cache with each revision of the main repo (since we cache the external in place with the main repo). This would be a lot more efficient. I am starting to regret adding the externals feature to continua, it adds a lot of complexity and doesn’t perform well. After spending several weeks working on supporting subversion externals, mercurial subrepos and git submodules I am beginning to think would probably shouldn’t have (and we’ll consider removing or disabling it). I’m going to discuss this with the team on Monday and we’ll decide what to do from there.
Hello!
In this case I don't use externals. This libraries are Delphi repositories, and many BPLS dcus are about 2.5 Gb
I only use externals in Android projects and are working nicely!
Thanks,
Pedro Lopes
Hi Pedro
Make sure you use the Source Rules to only get the files from the repositories that you need… Keep that many binaries in a repository is going to slow down your builds a lot.
Hi Pedro
We have made changes to the subversion support (again) which should improve the performance for large repos. We are no longer using export for getting the changes, and using the switch to branch command has improved performance a lot for monitoring multiple branches.
Hi Pedro
We just posted a new beta (1494), this should speed things up a bit.