Итак, у меня есть проект go, который разделен на отдельные проекты, возможно, сейчас он называется микросервисом. Большинство из них используют одну и ту же структуру каталогов, поэтому я хочу сохранить один пустой шаблон проекта для создания службы и объединить их в большой репозиторий, чтобы упростить процесс сборки в то же время.
Объединенные основные репозитории структура имеет вид:
.
|-app/ source code
| |-moduleA/
| | |-serviceA-a/ service is separated into different folders
| | |-serviceA-b/
| |-moduleB/
| |-serviceB-a/
| |-serviceB-b/
|-build/ tools
|-common/ uuid, etc...
|-library/ internal library
|-vendor/
В то время как структура отдельной службы похожа, например: serviceA-a
:
.
|-app/
| |-moduleA/
| |-serviceA-a/
|-build/
|-common/
|-library/
|-vendor/
А репозиторий шаблона выглядит так:
.
|-app/
| |-placeholder/
| |-placeholder/
|-build/
|-common/
|-library/
|-vendor/
Все эти build
, common
, library
одинаковы, каталог vendor
создается во время сборки, поэтому это не имеет значения. Поэтому я хочу сохранить их в одном пустом репозитории шаблонов.
То, что я тестировал до сих пор:
- Поддерживать шаблон в совершенно другом репо. Это то, что мы сделали до сих пор. Если что-то изменилось в проекте шаблона, нам нужно зафиксировать репозиторий шаблона, а затем отправить запрос на слияние в основное репо. И если кто-то забыл зафиксировать проект шаблона или забыл выполнить слияние с основным репо, мы закончили тем, что использовали WinMerge, чтобы узнать, какой файл был изменен, это обычно длится недолго, но довольно раздражает.
- Используйте
git submodule
. Поскольку я не узнал, как добавить подмодуль в каталог верхнего уровня (не в подпапку, возможно, невозможно), мне нужно создать 4 проекта для каждой папки (на самом деле даже больше). И файлы в каталоге верхнего уровня не будут отслеживаться, поэтому мне нужно вручную копировать их в основное репо каждый раз, когда эти файлы меняются. Этот намного лучше, но не идеален. - Используйте ветки и sh pu для разных репозиториев. Этот такой же, как и первый, мне нужно переключать ветки назад и вперед при фиксации изменений.
Мой вопрос:
- Возможно ли это сделать в 1 или 2 папки, используя
git submodule
? - Если это невозможно, есть ли лучший способ сделать это, кроме создания 2 совершенно разных репозиториев?
- Или мне не следует использовать этот метод для отслеживать шаблонный проект?