hmm interfacing directly with git seems a touch ugly. We are already doing quite a bit of this in this project, and each method is handling catching git not installed and other errors in their own way, which makes things quite a bit harder to debug.

I would propose abstracting the git interface into a module that we can call to dry up this file and the others.