Я хотел бы знать, имеет ли смысл разделять проект, над которым я работаю, на два репозитория вместо одного.
Из того, что я могу сказать:
- Интерфейс будет написан на html + js
- Бэкэнд в .net
- Внутренний интерфейс не зависит от внешнего интерфейса, а внешний интерфейс не зависит от внутреннего интерфейса.
- Интерфейс будет использовать успокоительный API, реализованный в бэкэнде.
- Веб-интерфейс может быть размещен на любом статическом http-сервере.
На данный момент хранилище имеет такую структуру:
корень:
- внешний интерфейс/*
- бэкенд / *
Я считаю ошибкой держать оба проекта в одном репозитории. Поскольку оба проекта не имеют зависимостей между собой, они должны принадлежать отдельным репозиториям и, если необходимо, родительскому репозиторию с подмодулями.
Мне сказали, что это бессмысленно и что мы не получим никакой выгоды от этого.
Вот некоторые из моих аргументов:
- У нас есть два модуля, которые не зависят друг от друга.
- Наличие истории обоих проектов в долгосрочной перспективе может усложнить ситуацию (попробуйте поискать в истории что-то во внешнем интерфейсе, пока у вас есть половина коммитов, которые совершенно не связаны с ошибкой, которую вы ищете)
- Конфликт и слияние (Этого не должно быть, но если кто-то подтолкнет к бэкэнду, он заставит другого разработчика вытянуть изменения бэкэнда, чтобы подтолкнуть изменения внешнего интерфейса.)
- Один разработчик может работать только с бэкэндом, но ему всегда придется использовать внешний интерфейс или наоборот.
- В конце концов, когда будет время для развертывания. В некотором смысле, веб-интерфейс может быть развернут на нескольких статических серверах при наличии одного внутреннего сервера. В любом случае, люди будут вынуждены либо клонировать с ним весь бэкэнд, либо создать собственный скрипт для отправки на все серверы только внешнего интерфейса или для удаления бэкенда. Проще всего нажать / вытащить только внешний или внутренний интерфейс, чем оба, если нужен только один.
- Встречный аргумент (один человек может работать в обоих проектах). Создайте третий репозиторий с субмодулем и развивайте его. История хранится в отдельных модулях, и вы всегда можете создать теги, в которых версии бэкэнда / внешнего интерфейса действительно работают синхронно. Наличие обоих фронтэнда / бэкенда в одном репо не означает, что они будут работать вместе. Это просто объединяет обе истории в одно большое репо.
- Наличие внешнего интерфейса / бэкенда в качестве подмодулей облегчит задачу, если вы захотите добавить фрилансера в проект. В некоторых случаях вы действительно не хотите предоставлять полный доступ к базе кода. Наличие одного большого модуля усложнит ситуацию, если вы захотите ограничить то, что «посторонние» могут видеть / редактировать.
- Ввод ошибки и исправление ошибки, я вставил новую ошибку в веб-интерфейс. Тогда кто-то исправит ошибку в бэкэнде. С одним хранилищем откат до новой ошибки также откатит бэкэнд, что может затруднить его исправление. Мне бы пришлось клонировать бэкэнд в другой папке, чтобы он работал во время исправления ошибки во внешнем интерфейсе ... затем попытался бы исправить ситуацию ... Наличие двух хранилищ будет безболезненным, потому что перемещение HEAD одного репо выиграло не меняй другой. И тестирование против другой версии бэкэнда будет безболезненным.
Может ли кто-нибудь дать мне больше аргументов, чтобы убедить их, или хотя бы сказать, почему бессмысленно (более сложно) разделять проект на два подмодуля. Проект новый, а кодовой базе - пара дней, поэтому исправление еще не скоро.