With Gitolite V3 or 'g3' and its VREF, it should be possible to implement those restrictions.
But the access you can manage is only for write-access.
If a user can clone a repo, he/she will have read-access to all the repo (as mentioned in "gitolite: allow to change only selelected files").
If you really want to limit read-access, you might try gitolite 'partial-copy
'.
Few notes:
An access rule is like:
<permission> <zero or more refexes> = <one or more users/user groups>
<zero or more refexes>
means your can combines refexes
That would give something like (not tested):
repo REPO
RW+ master = MAINTAINER
- master VREF/NAME/A = CONTRIBUTOR
RW master VREF/NAME/B = CONTRIBUTOR
RW personal/USER/ VREF/NAME/A = CREATOR
RW personal/USER/ VREF/NAME/B = CREATOR