Подмодули Git с различными доступами

#git #git-submodules

Вопрос:

У меня есть суперпроект, в котором около 80 подмодулей (может увеличиваться/уменьшаться в зависимости от разработанных функций), каждый подмодуль добавлен правильно и .gitmodules выглядит следующим образом:

 [submodule "modules/submodule_name"]  path = modules/submodule_name  url = https://gitlabserverdomain/group/child_group/child_group/submodule_name.git  branch = master  update = rebase  ignore = dirty  

Мы команда разработчиков, и у каждого разработчика есть своя роль, т. е. Сотрудник 1 работает над частями системы, содержащей ABC, а сотрудник 2 работает над частями системы, содержащей XYZ. Сотрудник 1 не может видеть XYZ, а сотрудник 2 не может видеть ABC, поэтому мы начали использовать подмодули.

Однако у меня возникла небольшая проблема с запуском

git clone --recursive https://gitlabserverdomain/group/superproject.git

создает папки для подмодулей и инициализирует .git экземпляр в каждом подмодуле, но при каждом запуске суперпроекта он пытается также извлечь все подмодули, что занимает очень много времени.

  1. Есть ли способ узнать, к чему у сотрудника есть доступ, и автоматически предоставлять только то, что доступно сотруднику?
  2. Кроме того, скажем, мы предоставили доступ сотруднику 2 к подмодулю HIJ, сотрудник вытащил подмодуль и имеет файлы в локальном репозитории, однако мы хотели отозвать этот доступ, есть ли способ также удалить доступ к этим файлам из локального репозитория после их извлечения ?

Комментарии:

1. 1. № 2. Нет. (Подмодули какие-то ужасные.)

2. Привет @torek, спасибо за ваше сообщение, вы знаете, как этого добиться?

3. Хотя (как я люблю говорить) Подмодули ошибочны, они также являются единственной игрой в городе. Ну, это не совсем так: Google придумал repo и, возможно, еще одну вещь из-за всех проблем с подмодулями. Но сейчас Google в основном отказался repo от этого; по-видимому, с этим так же много проблем.

4. Обратите внимание, что из-за децентрализованного характера Git, если вы дадите кому-либо доступ к хранилищу, он сможет клонировать все это, и с этого момента у него будет полный контроль над своей копией. Это не зависит от существования или использования подмодулей: это часть дизайна Лайнуса, согласно которому каждый всегда должен иметь доступ ко всему.