@Farrien
Tell me who

Как обновлять код в двух репозиториях?

Есть два проекта, они использует одинаковый бэкенд, только что-то для фронта меняется. Меняя бэкенд в одном, как то можно и в другой проект эти обновления влить?
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
Lobotomist
@Lobotomist
Software Developer
В таком случае стоит вынести бэкенд в отдельный репозиторий и подключать его как зависимость. Нормальных вариантов решать это через git мне не известно и я очень сомневаюсь что они есть по той простой причине, что git для решения таких задач не предназначен. По сути у вас получается три продукта, связанных между собой разными связями. Две версии фронтэнда (два продукта) связаны между собой общей "основой" (кодом), то есть это аналогично "наследованию" в ООП от общего базового класса. А от бэкенда они "зависят". Причем, могут зависеть от разных его версий (скорее всего будут, рано или поздно). То есть это больше похоже на "композицию" в терминах ООП. Так вот git - он не призван решать проблему зависимостей одного проекта от другого. Для этого нужно использовать менеджер зависимостей. Не знаю, на чем у вас написан проект, но для php это будет composer, для nodejs - npm, для python - pip(pyenv, poetry) и т.п.

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

Например. Имеем по репозиторию (или ветке/несколько веток) для каждого проекта. При изменении кода бэкенда в одном из проектов сливаем его с кодом другого проекта, игнорируя при этом все изменения не бэкенда. Практическая реализация этого зависит от структуры кода и вообще вашего workflow. Но история проекта будет не красивой - все эти слияния, в которых еще и игнорируются изменения фронтэнд части... Это будет работать, но... это ужасно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@KuzmenkoArtem
Ну алгоритм примерно такой:
1. Добавить еще один сервер
git remote add server2 https://github.com/user/repo.git

2. Сделать изменения локально
3. Сделать пуш в origin git push origin develop
4. git fetch server2 - стянуть код с server2 что бы при пуше не ругалось
5. git checkout server2-develop - перейти на ветку где будет храниться код со второго сервера
6. git merge server2/develop - смерджить туда изменения с сервера
7. git cherry-pick d42c389f - смерджить коммит, который содержит изменения бэкенда
8. git push server2 develop - запушить изменения на сервер 2

P.S. именно в таком виде я этот алгоритм не использовал, может что-то работаь не так
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы