The idea here is that when reviewing someone's code, instead of writing up the problems that you found and handing the write-up to the author (which they may or may not understand, and may or may not act on), you actually just fix the code as you go, committing each little change you make with an explanatory comment as the commit message. The author can then look over the history to see not only what the comments were, but exactly what each one means in the code. You're guaranteed that the problems are fixed, and (assuming the original programmer actually does look over the history) the learning value is much higher.<p>I've done exactly this on a couple of occasions and it worked very well. Among other things, it's easier on the reviewer. (Who likes writing up a big document or email? Much better to actually fix code.) Personally, though, I find it more productive to work more collaboratively to begin with.