A Step Towards Distributed Version Control in the Upcoming TFS 11!
As previously hinted by Microsoft’s Brian Harry, in a comment on his blog distributed version control (or DVCS) is on the TFS team’s backlog. Now, with last week’s announcement, the upcoming version of TFS will take a step towards distributed VCS. This change comes in the form of a new concept: Local Workspaces. What this means, in simple words, is that rather than having to make all your changes in a TFS approved environment (Visual Studio, Team Explorer, Source Control Explorer, etc.), you will be able to make all your changes (i.e. rename, move, delete and edit files) locally, and TFS will figure out what needs to be checked in, when you choose to do so!
That’s right folks! No more scenarios where you fail to check out one item, and then get hit on the head when you want to check in one or two days worth of changes (some environments will easily allow you to change files regardless of them being marked as read only).
How is that possible? Well, TFS is moving from a Checkout –> Edit –> Checkin model to the Edit –> Merge –> Commit model that is prevalent among many modern version control systems (like subversion, for example). Of course, the old way of doing things will still be available, but the new way will be the default.
In Brian Harry’s blog post, he states that with regards to the question “but did you implement DVCS?” the answer is still “No, not yet. You still can’t checkin while you are offline” (Emphasis mine). However, I believe that this will now be easily solved with a new and improved as soon as a Git-to-TFS Bridge (or mercurial, my personal favorite) will be developed!
The main problem with the various vcs-to-TFS bridges, is the fact that the changes must be applied to the workspace, and require us to checkout the items – an act that defeats the main purpose of a DVCS: Working in a manner that is disconnected, neither affecting nor being affected by other developers efforts, or the status of the server. Of course, once we no longer need to checkout files, the obstacle is removed, and we can easily work with our DVCS of choice locally and extend them (at least the open source ones) to add a command to publish to TFS. I promise to develop one as soon as I get my hands on a CTP of TFS 11.
Finally, I want you all to join me and lets give a warm hand to TFS 11, welcoming Microsoft to the 21st century! Hurray!