1) automatically pull changes into the deployment repository from the bare repository
2) automatically push changes into the bare repository from the deployment repository
feels like a hack. Maybe git needs a concept somewhere between a normal and a bare repository, where the files are checked out but aren't teated like a normal work tree, i.e. you can't commit anything, and on a merge any local changes are thrown out?