Questions regarding TFS repositories / cache

Hi VSoft,

I have a TFS repository which is only used by one configuration. The size of the repository is approx 1GB, containing mostly vss solutions. The inital adding of the repository left it sitting at “Updating Cache…” for hours. I assumed this was just a one-off lengthy update, however every time I queue the build it waits to check the repository while it updates again, which still seems to take hours. Could there be a reason it taking such a long time? There are only a minor number of changesets occurring between each build.

I’m wondering if it’s possible to specifiy a more specific area of the repository to check, rather than the entire TFS team project. For example, we have a team project called PRODUCTS, containing a number of folders for each solution/application. Only one of these folders is used by the configuration i’m trying to build. Can I be more specific when adding a repository, or is it the entire team project or nothing? I don’t particularly fancy seperating out my solutions into seperate team projects - but i’m sure this isn’t necessary, I must be missing something.
(I was hoping in the Team Project Path box, I could put something like “$\PRODUCTS\MySolution”)
Or should I be using the exclude patterns functionality for this? To exclude entire areas of the project?

Any advice on this would be appreciated.

Regards,
Luke

If you are only using a small part of the repository then you definitely should be more specific in the Team Project Path setting.

$\PRODUCTS\MySolution is exactly what you need to do.

The more specific you are the less work Continua CI & TFS has to do. When you create a Continua CI respository, it will

a) Look for recent changes in the source repo and register those as changesets in Continua CI.
b) Check out the most recent change and commit that to it’s cache (a mercurial repository).

TFS is quite slow so the less work we ask it to do the better.

Hi Luke,

As you have noticed, you can only set the Project Team Path to the root of the repository. You need to use settings on the Branches tab to limit the area of the repository which Continua checks and copies to the agent.

How you do this depends on your repository structure. Here are some examples:

Repository with no branches 

Branches to Monitor: Single branch
Branch Path: /
Relative Folder Under Branch: /MySolution

Repository with single branch under project

Branches to Monitor: Single branch
Branch Path: /MySolution/Master
Relative Folder Under Branch: 

Repository with branches under project

Branches to Monitor: All branches
Default Branch: /MySolution/master
Branch Pattern: /MySolution/.*
Relative Folder Under Branch: /MySolution

Repository with projects under a single branch 

Branches to Monitor: Single branch
Branch Path: /Master
Relative Folder Under Branch: /MySolution

Repository with projects under multiple branches

Branches to Monitor: All branches
Default Branch: /Master
Relative Folder Under Branch: /MySolution


Please note that you can use more than more Continua repository per TFS repository, e.g. one for main executable and others for each library. The more you split up the repository the better Continua will perform.

It’s still unusual that the build should take a long time once the cache has been updated. Please ensure you have the latest version of Continua installed. You haven’t said which version you are using and there have been various improvements to TFS support in recent builds. 

If you still have issues or require further help with settings please provide details of your repository structure and the paths relevant to your builds. Also send us details of your current repository settings. The easiest way to do this is to download a diagnostics report from the Event Log page in the Administration area. Send this to support@finalbuilder.com rather than posting publicly here.



Hi Dave,

Thank you very much for the comprehensive explaination - I’ve limited the repo using the “Repository with projects under a single branch” method, and the updating process is now nice and quick. However when I try and build I get the message “Unable to start build - no changesets found in repository ‘repo name’ for branch ‘/Master’”. I tried doing a few test check-ins to the repo but didn’t seem to help. We’d need to be able to build regardless of whether there’s been a recent changeset however. Is there a setting somewhere i’m missing? I’m using the latest version of Continua. I’ve sent a diagnostics report though via email if this helps.

Thanks again,
Luke

Hi Luke,

I would need to know more about the structure of your repository. Is /Master defined as a branch in your repository e.g. with a branch icon in Team Explorer as in the following screen grab:



Does the PetroView_Pro folder (specified as the relative folder) exist under that branch?

If so, please enable debug logging, restart the server, reset the repository, queue a build and then send this to support@finalbuilder.com

Please also send details of your repository structure - a Team Explorer screenshot with all relevant folders expanded would be ideal.




Thanks Dave, I’ve emailed a screenshot of my repo structure. I’ve probably just got my settings incorrect.