@Farrien
Tell me who

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

Есть два проекта, они использует одинаковый бэкенд, только что-то для фронта меняется. Меняя бэкенд в одном, как то можно и в другой проект эти обновления влить?
  • Вопрос задан
  • 73 просмотра
Решения вопроса 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. именно в таком виде я этот алгоритм не использовал, может что-то работаь не так
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
8BIT GROUP Москва
от 150 000 до 200 000 руб.
Smartbics Нижний Новгород
от 50 000 до 70 000 руб.
20 февр. 2019, в 23:54
1000 руб./за проект
20 февр. 2019, в 23:26
25000 руб./за проект
20 февр. 2019, в 22:04
500 руб./за проект