tags:

views:

39

answers:

2

I've been reading through the TeamCity 4.x documentation, and I am confused what the difference between a server side checkout and an agent side checkout is, as mentioned in this snippet from their help section:

Exclude checkout rules will only speed up server-side checkouts. Agent-side checkouts emulate the exclude checkout rules by checking out all the root directories mentioned as include rules and deleting the excluded directories. So, exclude checkout rules should generally be avoided for the agent-side checkout.

What is the difference between a server-side checkout and an agent-side checkout?

+1  A: 

The answer is in TeamCity forum: http://www.jetbrains.net/devnet/message/5251095#5251095

Pavel Sher
It might be helpful for you to pull that answer over to Stackoverflow, and when you do, I'll mark this answer as the correct answer. Thanks!
Andrew Garrison
A: 

Ok, here is the answer from Pavel Sher (a JB guy) :

The main reason why server side checkout exists - is to simplify administration overhead.

With server side checkout you need to install VCS client software on the server only (applicable to Perforce, Mercurial, TFS, Clearcase, VSS). Network access to VCS repository can also be opened to the server only. So if you want to control who has access to your sources repositories it is probably better to use server side checkout.

As a side effect in some cases server side checkout can lower load produced on VCS repositories especially if clean checkout is performed often. This is because clean patches are cached by server. However this is environment specific, probably in some cases agent side checkout will work better.

Exclude rules also are better processed with server side checkout because usually agent side checkout is just an update and with most VCSes there is no way to exclude some directories during update operation.

From the other hand because agent side checkout is just an update or checkout it creates necessary administration directories (like .svn, CVS), so it allows you to communicate with repository from the build: commit changes and so on. With server side checkout such directories won't be created.

Gilles Philippart
hehe thanks Andrew !I'm a TC user too by the way :)
Gilles Philippart