Ответ 1
Это выполнимо с центральным репо с доступом (push/pull), которым управляет gitolite.
Смотрите его функции.
Если вы комбинируете это с субмодулями (о которых вы знаете), вы будете управлять только для каждого репо или для доступа к каждой ветки и по-прежнему выполнять как project1, так и project2 (с двумя коммитами в случае подрежима: см. этот вопрос)
Если вы настаиваете на работе с одним репо (даже если вам нужно установить данные, которые могут развиваться с их собственным жизненным циклом, что должно сделать их хорошими кандидатами для модулей), то функции gitolite включают:
файл /dir Ограничения на основе NAME
В дополнение к ограничениям на основе имен ветвей, гитолит также позволяет вам ограничить, какие файлы или каталоги могут быть задействованы в нажатых изменениях
dpk упоминает в комментариях, что эта последняя функция (ограничение имени файла /dir ) подробно описана в conf/example.conf
файл Gitolite.