#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
экземпляр в каждом подмодуле, но при каждом запуске суперпроекта он пытается также извлечь все подмодули, что занимает очень много времени.
- Есть ли способ узнать, к чему у сотрудника есть доступ, и автоматически предоставлять только то, что доступно сотруднику?
- Кроме того, скажем, мы предоставили доступ сотруднику 2 к подмодулю HIJ, сотрудник вытащил подмодуль и имеет файлы в локальном репозитории, однако мы хотели отозвать этот доступ, есть ли способ также удалить доступ к этим файлам из локального репозитория после их извлечения ?
Комментарии:
1. 1. № 2. Нет. (Подмодули какие-то ужасные.)
2. Привет @torek, спасибо за ваше сообщение, вы знаете, как этого добиться?
3. Хотя (как я люблю говорить) Подмодули ошибочны, они также являются единственной игрой в городе. Ну, это не совсем так: Google придумал
repo
и, возможно, еще одну вещь из-за всех проблем с подмодулями. Но сейчас Google в основном отказалсяrepo
от этого; по-видимому, с этим так же много проблем.4. Обратите внимание, что из-за децентрализованного характера Git, если вы дадите кому-либо доступ к хранилищу, он сможет клонировать все это, и с этого момента у него будет полный контроль над своей копией. Это не зависит от существования или использования подмодулей: это часть дизайна Лайнуса, согласно которому каждый всегда должен иметь доступ ко всему.