Группы, безусловно, путь, но у вас все еще есть проблема.Если ваш пользователь не сможет увидеть корневую папку, он не сможет получить доступ к той подпапке, которую вы хотите видеть.
По этой причине я структурирую репо с минимумом значимых папок на верхнем уровне.Например:
trunk/
client/
services/
api/
Затем настройте разрешения, используя общий доступ для чтения, например:
[groups]
core = user1, user2, user3
client = user4
[repo:/]
* = r
[repo:/trunk/client]
@core = rw
@client = rw
[repo:/trunk/services]
@core = rw
@client =
[repo:/trunk/api]
@core = rw
@client = r
Джаред прав, что в этом есть свои риски, и вы должны быть осторожны, чтобы ваши пользователи нене помещайте файлы туда, где они не должны (уничтожение файлов - это боль, поэтому я использую чтение только для основных пользователей в целом), но до тех пор, пока вы осторожно настраиваете репо (например, зеркальное отображение структуры верхнего уровня ствола под ветвями дляоставьте файл authz простым), это эффективный способ выполнения работы.