Лучший способ сохранить пустой шаблон проекта - PullRequest
0 голосов
/ 06 мая 2020

Итак, у меня есть проект 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 создается во время сборки, поэтому это не имеет значения. Поэтому я хочу сохранить их в одном пустом репозитории шаблонов.

То, что я тестировал до сих пор:

  1. Поддерживать шаблон в совершенно другом репо. Это то, что мы сделали до сих пор. Если что-то изменилось в проекте шаблона, нам нужно зафиксировать репозиторий шаблона, а затем отправить запрос на слияние в основное репо. И если кто-то забыл зафиксировать проект шаблона или забыл выполнить слияние с основным репо, мы закончили тем, что использовали WinMerge, чтобы узнать, какой файл был изменен, это обычно длится недолго, но довольно раздражает.
  2. Используйте git submodule. Поскольку я не узнал, как добавить подмодуль в каталог верхнего уровня (не в подпапку, возможно, невозможно), мне нужно создать 4 проекта для каждой папки (на самом деле даже больше). И файлы в каталоге верхнего уровня не будут отслеживаться, поэтому мне нужно вручную копировать их в основное репо каждый раз, когда эти файлы меняются. Этот намного лучше, но не идеален.
  3. Используйте ветки и sh pu для разных репозиториев. Этот такой же, как и первый, мне нужно переключать ветки назад и вперед при фиксации изменений.

Мой вопрос:

  1. Возможно ли это сделать в 1 или 2 папки, используя git submodule?
  2. Если это невозможно, есть ли лучший способ сделать это, кроме создания 2 совершенно разных репозиториев?
  3. Или мне не следует использовать этот метод для отслеживать шаблонный проект?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...