abstraced git repo handling