Как версионировать ПО, которое состоит из нескольких модулей с использованием Git?
У меня есть абстрактное приложение, которое состоит из нескольких независимых модулей на разных языках. Я хочу использовать Git Submodules для версионирования: тогда у меня будет основной репозиторий, где хранится документация и конфиги docker-compose, и папки, куда Git тащит мои приложения из всех репозиториев.
Проблема: во время разработки, что бы протестировать новую фичу, мне придется проходить следующем путем: сделать коммит в репозиторий приложения, сделать push, потом обновить submodules в главном репозитории и только тогда поднимать. А если что то сломается, мне надо будет откатывать коммит (что особенно актуально когда разработка только начинается, и таких правок сотни).
Второй вариант - создать подпапки в репозитории, но это приведет к тому что коммиты будут смешиваться. Более того, это может ломать IDE и системы управления зависимостями (например, модули Golangа будут плохо себя чувствовать, а системы контроля версий интегрированные в IDE могут чувствовать себя плохо).
Есть ли какая то альтернатива или гибридный подход к управлению зависимостями приложений из нескольких модулей?
Ответы (1 шт):
Есть 3 вариант,
- Создайте для каждого автономного модуля отдельный репозиторий. Что бы программисты могла работать только в 1м проекте.
- Создайте ветки Developer и production для каждого проекта. Когда есть логическая концовка заливаете из Developer на Production.
- Создайте пользователя для devops в роли Reporter. Что бы с эго имени можно было клонировать проект
- Создаете bash файл, который из каждого проекта берет ветку production и компилирует. Думаю компилятор у вас через терминал запускается.
- Потом дальше удаляет старые версии и ставил новую и перезапускает службы.
пример
export gitUrl="$gitBaseUrl/project.git"
export gitBranch="production"
gitclone() {
echo "Cloning project $projectName..."
rm -rf $projectFolder
mkdir -p $projectFolder
git clone --branch $gitBranch $gitUrl $projectFolder
}