More Limitations of TFS Branching

Recently I pointed out some of the ways in which TFS’s source code control tied our hands - at least compared to CVS. I repeat that TFS is a good product and very stable. But it is young and therefore incomplete. Be aware of the following fact: When you branch a file, the branched copy of that file loses its memory. The history of that file begins at the point of branching. Try it out - branch a directory and commit the resulting new directory. Take a look at the history of any file in the branch. It’s newborn - it doesn’t remember of any of the changesets that were made on it before the point of branching.

This isn’t very nice. For example, if you are on a release branch, and you want to roll back a changeset that was made on Main, well, you can’t. You have to roll back (using Power Tools) on the Main, merge the resulting changeset to the release branch, and then on the Main roll back the rollback! In CVS you can see the combined history of a file including all its branches, and merge (a rollback is effectively a reverse merge) in any way you see fit.

I don’t know (yet) if this is an unavoidable consequence of directory space branching (if it is, it’ll be a long time before I’m convinced to switch from CVS to Subversion for our Java projects), or whether it’s just limitations of TFS. Anyone else out there suffering in a similar way with their source code control system?

Technorati Tags: , ,

2 Responses to “More Limitations of TFS Branching”


  1. 1 Imran

    This is exactly what we are suffering. The only workaround to do a “rollback” in the branch is to manually copy the original version from the main branch (copy paste the code) and then work on it. Not sure if there is any “right click” way of doing this.

    I think this is a serious limitation of TFS and hope they will change it in the next version.

  2. 2 Brendan Lawlor

    Hi Imran,
    In the meantime, I’ve found myself working on Subversion and seeing precisely the same limitation. This would seem to suggest that this is a direct consequence of directory-space branching. I think I have a bit of reading to do, and my first step will be to check out the Pragmatic Programmers book on Subversion (I’m assuming such a thing is available). The lessons from that should be in part applicable to TFS.

Leave a Reply