I think this would be two repos. Your internal repo with all the commits and users, and a second repo that has the institutional code drops. Every so often you check out the internal repo into the external one and do an institutional commit of all the changes – perhaps with a big comment automatically generated from the internal repo comments since the last code drop. This only really works for one-way code drops but you could apply external contributions against the internal repo. It isn’t real open development, but that is what you don’t want.