Подпроекты Git?

#git #components #git-submodules

#git #Компоненты #git-подмодули

Вопрос:

Я работаю над парой разных дополнений Joomla, но хочу сохранить их как отдельные репозитории git, поскольку у них разные команды разработчиков (и даже организации). Тем не менее, я также хотел бы сохранить их как единый каталог, использующий одну и ту же базу Joomla (которая игнорируется .gitignore). Из-за структуры Joomla это может быть немного сложно, поскольку она имеет следующую структуру:

 /joomla/  
|--/administrator/  
|--|--/components/  
|--|--|--/component_a/  
|--|--|--/component_b/  
|--|--/language/  
|--|--|--/en-GB/  
|--|--|--|--/component_a_lang.ini  
|--|--|--|--/component_b_lang.ini  
|--/components/  
|--|--/component_a/  
|--|--/component_b/  
|--/language/  
|--|--/en-GB/  
|--|--|--/component_a_lang.ini  
|--|--|--/component_b_lang.ini  
  

Я знаю, что мог бы создать центральное репозиторий и использовать ветви для каждого подпроекта и просто быть осторожным с использованием правильного пульта дистанционного управления для правильного подпроекта. Но есть ли более простой способ (подмодули?) хранить все подпроекты в одном каталоге, чтобы, если бы я захотел скопировать все это для тестирования, мне не пришлось бы переключать ветки и играть с copy-pasta?

Ответ №1:

Обычно я бы рекомендовал использовать подмодули, но в данном случае они не совсем подходят из-за структуры проекта.

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

Одним из возможных решений было бы поместить все эти файлы в один каталог и использовать символические ссылки, чтобы поместить их в нужное место. Но у этого есть несколько недостатков. Вам потребуется воссоздать все символические ссылки в каждом репозитории, и это также может вызвать проблемы у пользователей Windows.

Ответ №2:

Как говорит @Ikke, способ распространения кода по каталогам делает использование подмодулей для их хранения громоздким.

Я думаю, я бы просто использовал отдельные ветви для отдельных направлений разработки. Это «функции», верно? Больше или меньше? Так что, вероятно, вполне уместно рассматривать их как ветви функций.

Если ваш центральный репозиторий обслуживается gitolite, вы можете настроить доступ для каждой ветви для отдельных пользователей и групп. Вы можете сделать так, чтобы каждый мог читать каждую ветку (важно для тестирования), но только избранные группы могут переходить к своей собственной ветке.

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

1. Я не беспокоюсь о других пользователях, поскольку это мой личный репозиторий, который я затем отправляю в несколько репозиториев (например, GitHub)

2. Ох. Интересно, почему я прочитал ваш вопрос как подразумевающий нескольких пользователей… Ну, в любом случае, тогда это еще проще. Это всего лишь ветви функций.