At my workplace we have one large Subversion repository which holds about 100 projects. Some projects use each other through svn:externals. Usually all people have read+write access to everything, but sometimes external people and interns have only restricted read/write access to some custom folders so they don’t get our crown jewels.
How would you structure this in git? Each Project its own repository? how can you reuse code? Can you somehow implement access rights?
Structure: Yes, 1 project per repository. Git is designed for it to work this way and it does it quite nicely.
Reusing Code: Use git submodules (very similar to svn:externals, only better)
Access rights: Yes, access control is often built around ssh and public keys. If you want to host it yourself, try gitosis, but I actually highly recommend a hosted solution, like GitHub.