To answer my own question, i looked at the info Daniel Provided but it didnt tally up, i researched git group write and came accross http://andyregan.net/blog/archives/504
by giving my repository group ownership by a common group (puppet) and adding the relevant users to that group, and then running:
chmod -R g+swX /etc/puppet/
cd /etc/puppet
git repo-config core.sharedRepository true
worked perfectly for me, i can push to a root owned repository, puppet still works and i dont use a root ssh login to do so
Win, Win
UPDATE
I had this problem again also with puppet but looked to handle it in a better manner and solved this alternatively with the right bit of sudoers config by adding the following after the env_reset line:
Defaults env_keep += SSH_AUTH_SOCK
this allows me to run a command like this:
cd /etc/puppet && sudo git pull && sudo git submodule sync && sudo git submodule update --init --recursive
in say a Rakefile (my user already has nopasswd permissions via Sudo) and everything works accordingly. What i achieved was basically to pass my ssh-agent forwarded ssh-key through to the root user and then do a git pull as if i was connected as my non-root user without storing my ssh key under the root user (or my non-privileged account on the server) Win Win