It called Human Revision Control. (Human Merging Engine)
We use Seapine Surround and for the most part it does a good job of merging, but the only way to fix merge conflicts that the source control cannot do is through human intervention.
So, my advice is:
Try to merge quickly. One nightmare was having a branch that did not rejoin main line for almost 2 years. When it was merged, many conflicts needed to be resolved. One developer earned the nickname "merge master" after spending a great deal of time fixing merge issues.
Be careful with auto generated code from wizards etc. Sometime this can be a real pain to merge, espeically if two branches autogenerated changes on the same file.
Try to control development. If developer A is ripping apart code files X and Y, it doesn't make much sense for developer B to work on X and Y in a different branch. Part of the merge management is to try and control what is being modified to avoid the potential for merge conflicts.
This is not to say that 2 developers can't work on the same file in 2 different branches. If 1 developer adds method A and another addsmethod B, then the merge should happen painlessly.
In the end there are always going to be some conflicts that need human intervention. By keeping those to a minimum you will have the best merge results.