Currently when I right-click -> Merge on a specific file in Visual Studio 2008 it attempts (and often succeeds) to automatically merge the file to my indicated target.
How can I force VS to always allow me to manually compare and merge the file in my merge tool?
I should mention that my source control is TFS.
Try using the command line with the /conservative flag. It is more likely to allow you to merge your changes in the merge tool.
/conservative -> Results in more conflicts when you merge one branch to another.
There are really two potential issues here:
As part of the Merge calculation, the server determines that no changes have been committed against the target file since the last time the two were fully in sync. Therefore, it's safe (by TFS semantics anyway) to simply overwrite the target file.
There are history records in both branches, so the server declares the file to be in a conflict state. It's now up to the client to choose a resolution.
There is nothing you can do about situation #1. It really should be safe unless there is a serious unpatched defect in the server code, corruption in the history database, or [most likely] your previous resolution choices have dramatically misled TFS about your true intentions. Worst case scenario, you always have the chance to build & run tests against your pending merge before anything gets checked in.
As you can see, there are many wrinkles to situation #2. It's unclear which step of that process you want to interdict, if any. Good news is, once control is transferred to the client, you have a broad (and easily extended) range of choices. Only tricky part is making sure you understand the consequences of each; admittedly, neither the UI nor the documentation is completely clear on this count. Reply with more details of your issue as needed.