Branching and Merging Presentation in TFS and Git
Posted February 5, 2010on:
My branching and merging presentation to developers went really well. I demonstrated the 3-way merging (using KDiffs), then branching and merging in TFS and in Git.
Here is the scenario. There are conflicts in V1.1 and V 2.0.
Using 3-way merging, conflicts are automatically resolvable. That is something cannot be done using the 2-way merging.
I mentioned my one of my two big disappointments in TFS merging. By default TFS dose 2-way merging, not 3-way. The above scenario requires manual resolutions to the conflicts.
Update: after the presentation, I was able to set KDiff3 as the diff and merge tool in team explorer, followed this tips from this blog post. It then can automatically resolve the above conflicts. But I am still not sure if TFS will be as good as Git in more complicated scenarios.
Next, I compared TFS and Git on branching. TFS creates a copy folder for the new branch. For big projects, it could be slow.
I don’t really care about branching, but merging must be good. Here is my second disappointment about TFS. By default TFS can only merge branches that are direct parent or child. I cannot merge V 1.1 to V 3.0.
We still like the project management/work item tracking and build features of TFS.
How to use Git with TFS? My suggestion during the presentation was to check out TFS projects as master and use Git locally. Like it is described here. The source control binding information in solution and projects are headache to deal with though.
I tried git-svn and TFS SVN Bridge against codeplex. It works well. I am waiting svnBridge’s new lease that supports TFS 2010.