I blog about debugging, development using .net, C#, SQL, and other Microsoft technologies.
Disclaimer: All posts are provided "AS IS" with no warranties, confering no rights, and expressing only my personal opinion, not Microsoft's.
To understand conflict types please read this article on MSDN. In this post I’ll focus on conflicts that need you to manually merge the files. Let’s rule out binary files first because TFS doesn’t compare them, and doesn’t store deltas of them, it stores the whole file every time it’s checked in. TFS treats all types of text files the same, no special handling for C#, XML, SQL, etc. The diff algorithm wouldn’t know if the change is in a method, a stored procedure, a tag, or is a comment. It’s just text for the diff algorithm but encoding plays a part when it’s not the same for both files. In this case, TFS will fall back to a common encoding (UTF-16) before comparing the files. While merging, TFS applies the changes automatically if they don’t conflict. If the changes you are merging are made in areas that are adjacent or share common lines, then the AutoMerge option won’t be available and you’ll have to intervene to merge them manually. TFS is more careful when it auto-merges changes and that’s why it wouldn’t auto-merge adjacent changes. If you are using a third-party diff/merge tool, YMMV.