Let's imagine that you are developing a feature F. So, starting from the trunk, you do it on a branch
trunk -> F1 -> F2 -> ...
Then you realize there is a bug in the trunk is something you depend on. You fix that, but still on your branch
trunk -> F1 -> F2 -> bugfix_in_F
You want to put that bugfix onto the trunk as soon as possible, so you apply t to the trunk. Now we really have a branch:
trunk ---------------------------------> bugfix
+->F1 -> F2 -> bugfix_in_F ->+
\ / /
+->F1 -> F2 -> bugfix_in_F ------> F3 -> F4
Now, it looks like you were smarter than you actually were: the bugfix happened out of the blue.
Worse... working with a group like my present project that is not test-driven, you may not have a failing test for the bugfix. Or, the failing test for the bugfix may only be integrated when you get the feature.
Sure, don't do that. I wish my project was test driven. But ...
Must rewrite Michael Feathers' Legacy Code book.