@The_good_game

Какую структуру репозиториев выбрать в проекте?

Я работаю над пет-проектом и думаю, как лучше организовать репозитории. В проекте будет бэкенд (Node/Express) и фронтенд для web (React) и mobile (React Native). Web и mobile местами будут иметь общий код.
На работе для всего этого используется монорепозиторий, но такой подход мне не очень нравится. Я бы хотел для каждого проекта (web, mobile и backend) создать отдельный репозиторий и поместить их как subtree в главный репозиторий в соответствующие директории front и backend. Но что тогда делать с общим кодом? Я бы хотел поместить его внутри главного репозитория рядом с нужными subtree, чтобы не создавать дополнительного репозитория для этого кода, мне кажется это избыточным. Но, как я понял, получить доступ из subtree к общему коду не получится.
Что бы вы сделали?
  • Вопрос задан
  • 243 просмотра
Решения вопроса 3
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
  • Бэк
  • Фронт
  • Мобилка
  • Либа проекта 1
  • Либа проекта ...
  • Либа проекта N

Фронт так же можно сделать поддеревом/подмодулем бэка. Зачем выносить общий код в отдельные репозитории? Дык декомпозиция же. Удобнее работать с кучкой маленьких, законченных и более-менее автономными модулями/пакетами, чем размазывать одинаковый код по куче разных репозиториев и потом гадать что новее, старее, совместимее, оптимальнее и прочее. Да, можно сделать один общий репозиторий и держать там миллион разных модулей и прочего (ну или один большой и толстый). А потом копать кротовые норы с красными глазами в этой горе непонятно чего в поисках ошибок и нужного кода.
Ответ написан
Комментировать
Krasnodar_etc
@Krasnodar_etc
avito front
Я бы делил на:
1 - mobile
2 - client core (subtree для 1 и 3)
3 - main (web front + backend)

Почему:
Я не уверен, но по-моему мобильный фронт живёт свое жизнью - ему не нужен SSR, у него свой релизный цикл и сборка, он никуда никогда не деплоится, нет никакой необходимости ему лежать в той же кодовой базе. Зачем он вам как subtree в основном репозитории?

Общий код вполне можно вынести в subtree

Веб фронту нужен SSR (?). Конечно, при старте проекта на работе я бы разделил SSR и API на разные репозитории, чтоб API можно было переписывать/релизить отдельно от сср и фронта, но для пет проекта не вижу в этом большого профита, кажется, удобнее весь бэкенд писать в одном месте

Честно говоря, для своего проекта я б вообще всё таки оставил монорепу + workspaces, просто чтоб не тратить время на переключения
Ответ написан
Комментировать
@sergiodev
Если честно, не вижу проблемы с одним репозиторием и отдельным папками внутри него для backend, web, mobile. Я так постоянно делаю в своих личных проектах. Единственной проблемой с таким подходом пока что было развёртывание приложения на сервер через git на каком-нибудь PaaS-сервисе типа Heroku, где не поддерживается сборка из подкаталога (т.е. только из корня репозиториия). Но это ограничение можно обойти через "git subtree split".
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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