When you track down and fix a regression—i.e. a bug that caused previously working code to stop working—version control makes it entirely possible to look up who committed the change that broke it.

Is it worth doing this? Is it constructive to point this out to the person that made the commit? Does the nature of the mistake (on the scale of simple inattentiveness to fundamental misunderstanding of the code they changed) change whether or not it's a good idea?

If it is a good idea to tell them, what are good ways to do it without causing offense or causing them to get defensive?

Assume, for the sake of argument, that the bug is sufficiently subtle that the CI server's automated tests can't pick it up.

Be assertive not aggressive.  Always favour saying something akin to "this piece of code is not working" vs "your code is not working".  Criticise the code, not the person who wrote the code. 

Better yet, if you can think of a solution, fix it and push to them -- assuming you have a distributed version control system. Then ask them if your fix is valid for the bug they were fixing.  Overall, try to increase both your and their knowledge of programming.  But do it without your ego getting in the way. 

Of course, you should be willing to listen to other developers coming to you with the same problem and act how you would have wished they did.  
