Synchronizing two TFS servers
I’ve seen a lot of questions lately about synchronizing one TFS server with another. I think the heightened interest in this scenario has been brought on by the announcement of the TFS Basic installation option. People are starting to think of new and cool ways they can use TFS and they want to be able to synchronize them with their “central” TFS server. We don’t have a solution for this today. I’m going to be watching the feedback over the next several months to judge how important this is to people to decide where to go with it. Synchronizing TFS is potentially a VERY complicated problem depending on what all you want to synchronize and how much fidelity you want. The issue is that there is a lot to synchronize. Source code control, while posing some interesting scaling and branch/merge fidelity challenges is reasonably straight forward. Work items also isn’t too bad but there’s a lot more stuff. For example, process template changes, tests and test results, build definitions, permissions, and on and on. We would need to think through the scenario very carefully and make sure we understand what all needs to be synchronized for the scenario. We’ve got a start on this problem. I’ve talked several times on my blog about a TFS to TFS synchronization tool we’ve been building for the past 6-9 months that we’re using to drive new requirements for our migration and synchronization toolkit and to support our ability to dogfood very recent builds of TFS while not subjecting the broader division to the instability and increased downtime (for upgrades, patching, etc). It’s possible (and I say possible because I don’t mean easy or straightforward) that we could move this tool towards supporting the scenario of a loosely connected star topology of TFS servers. That would allow you to have TFS Basic on your laptop and have all that TFS capability while offline and later sync it up with the “mother” server. I’m definitely interested in feedback on how valuable this would be to people. I’m also interested in feedback on what the relative priority of synchronizaton of the various pieces of TFS data would be.