If it were me, I would have two repositories. This way, you can have different permissions on each - public read access for the open source version and read/write for developers only on the "private" one.
To keep the private version up to date, I would set up a remote on the private version repository which points to the public version repository. This would allow you to pull or rebase changes from there onto the private one. This does however make the assumption that changes will not conflict (i.e. the private version feature-set is a super-set of the public version, rather than a divergence).