Drupal is using CVS for version controlling core and contrib modules. CVS has diffing options, but it becomes annoying when you try adding or deleting new files. Here's an example of how to use git to patch a contrib module - Organic groups.
Few years back there was a real hype about outsourcing development projects. I was working and living in New-Delhi, India at that time, and you could almost see the buzz of "outsourcing" in the air - people were so excited.