views:

950

answers:

9

Is anyone out there using Team Foundation Server within a team that is geographically distributed? We're in the UK, trying work with a team in Australia and we're finding it quite tough.

Our main two issues are:

  1. Things are being checked out to us without us asking on a get latest.
  2. Even when using a proxy, most thing take a while to happen.

Lot's of really annoying little things like this are hardening our arteries, stopping us from delivering code and is frankly creating a user experience akin to pushing golden syrup up a sand dune.

Is anyone out there actually using TFS in this manner, on a daily basis with (relative) success?

If so, do you have any hints, tips, tricks or gotchas that would be worth knowing?

P.S. Upgrading to CruiseControl.NET is not an option.

+1  A: 

Are you using TFS 2005 or 2008. Because 2008 made a huge number of improvements to the proxy. As well as the new service pack fixed a couple of bugs. Let me know it will help me on where to start, because I have used the proxy and I didn't have any problems. The biggest thing I found is that the internet connection between the proxy and the TFS needs to have a low latency.

Also I have found that sometimes a proxy is only the best solution if you are working on two different AD domains. If you are on that same one, setup a VPN or some other kind of secure connection between the two places, you will have your self a lot of time.

Nick Berardi
A: 

From my understanding you can have multiple TFS Application servers in different locations. They either can both talk to the same SQL Server or you could use SQL Server mirroring. Having your own local TFS server would likely speed up your development times.

John Downey
A: 

@John

That actually doesn't work because it makes conflict management a nightmare. Because conflicts are merged on the client side and then checked in not on the server. So when you go to sync the databases you run in to trouble. Also having multiple TFS servers is also a problem, unless they fixed that recently, because everything in the database is based off the domain of the TFS server that initially set it up.

Nick Berardi
A: 

@Nick Berardi

We're using 2008. The ping time is ~310ms which is just below the recommended maximum of 350ms. That's about as good as it gets between the UK and Australia. I suppose tunneling through planet could help, it would shave off about 100ms, but I don't think the budget would get approved. :-)

Do you think it's just going to be a problem because of this? We can live with that, but what's the deal with the random checkouts?

IainMH
+2  A: 

Definitely upgrade to TFS 2008 and Visual Studio 2008, as it is the "v2" version of Team System in every way. Fixes lots of small and medium sized problems.

As for "things being randomly checked out" this is almost always due to Visual Studio deciding to edit files on your behalf. Try getting latest from the Team Explorer, with nothing open in Visual Studio, and see if that behavior persists. I bet it won't!

Multiple TFS servers is a bad idea. Make sure your proxy is configured correctly, as it caches repeated GETs. That said, TFS is a server connected model, so it'll always be a bit slower than true "offline" source control systems.

Also, if you could edit your question to contain more specific complaints or details, that would help -- right now it's awfully vague, so I can't answer very well.

Jeff Atwood
A: 

@IainMH

The random checkouts are Visual Studio, if somebody does a find and replace it checks out all the necessary files. If a code file has sub-files it checks out all the sub-files. It you run a test the vsstest file is checked out. And on and on and on.

You also have to remember what Microsoft recommended minimums are. They find the minimum by seeing how low they can decrease the system resources before you want to shoot yourself. I believe, Windows Vista recommended RAM is about 512 MB. Obviously we all know that anything under 2GB is going to be painful.

So you are basically right on the edge of whanting to shoot yourself in Microsofts eyes. As for the random checkouts make sure you enabled multiple check-outs so that the Visual Studio randomness doesn't effect everybody else. Because if the file isn't changed VS will not check it in, but just release the checkout from you.

Basically a balancing game like anything else in the software world.

Nick Berardi
A: 

@Jeff - Wouldn't getting latest from Team Explorer bypass the proxy? I've tried adding a proxy to it and it doesn't like it. Maybe the solution is to do the first get latest of the day via Team Explorer and then use the proxy for the rest.

I suppose it would be time to make tea and have a stand-up agile meeting.

IainMH
+1  A: 

@IainMH

Like Jeff said the proxy server config needs to be tweaked for you individual practices at your location. The default config almost never works for most people. You probably should take a look at Managing Remote Connections from MSDN. Also I find this article and testing and managing cache performance.

Nick Berardi
+1  A: 

We use TFS with a somewhat distributed team - they aren't too far away but connect via a slow and unreliable VPN.

For your first issue, get latest on checkout is not the default behaviour. (Here's an explanation) There is an add-in that will do it for you, though.

Here's the workflow that works for us:

  1. Get latest
  2. Build and verify nothing's broken
  3. Work (changes pended)
  4. Get latest again
  5. Deal with merge conflicts
  6. Build and verify nothing's broken
  7. Check in

[edit] OK looks like you rephrased this part of the question. Yes, Jeff's right, VS decides to check some files out "for you," like sln and proj files. It also automatically checks out any source file that you edit (that's what you want though, right? although you can change that setting in tools > options > source control)

The proxy apparently takes a while to get ramped up (we don't use it) but once it has cached most of the tree it's supposed to be pretty quick. Can you do some monitoring and find the bottleneck(s)?

Anything else giving you trouble, other than get-latest-on-checkout and speed?

Aidan Ryan